Problème avec un Iterator
Bonjour.
Bon, je sais pas trop comment expliquer mon problème.
En simplifiant, j'ai une DB avec les tables, classes suivantes.
Reports:
Code:
1 2 3 4 5 6
| private int idReport;
private Date dateReport;
private Distances distances;
private Users users;
private Depense depense;
private String reportMotif; |
Distances :
Code:
1 2 3 4
| private int idDistances;
private Companies companiesByFinishCompanyId;
private Companies companiesByStartCompanyId;
private Float distance; |
Companies :
Code:
1 2 3 4 5 6
| private int idCompany;
private String CompanyName;
private String companyDesignation;
private String companyAddress;
private Integer companyPostalCode;
private String companyCity; |
Dans une JSP, je veux iterer les "reports" mais j'ai besoin aussi d'afficher les "Companies" correspondantes.
Après plusieurs essaies (avec et sans EL) j'ai fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <table class="table">
<tr>
<th>Date</th>
<th>Départ</th>
<th>Arrivé</th>
<th>Nbr Kms</th>
<th>Motif</th>
<th>Commentaire</th>
<th>Montant</th>
<th>Supprimer</th>
<th>Modifier</th>
</tr>
<s:if test="%{ reports == null }">
<tr>
<th colspan="10">
<div class="alert alert-success" role="alert">Pas de note de frais</div>
</th>
</tr>
</s:if>
<s:else>
<s:iterator value="reports" status="status" var="report">
<tr>
<td><s:property value="#report.dateReport"/></td> <!-- Fonctionne -->
<td><s:property value="#report.distances.companiesByStartCompanyId.CompanyName"/></td> <!-- Ne fonctionne pas -->
<td></td>
<td><s:property value="#report.distances.distance"/></td> <!-- Ne fonctionne pas -->
<td></td>
<td><s:property value="#report.reportComment"/></td> <!-- Fonctionne -->
<td><s:property value="#report.reportExpense"/></td> <!-- Fonctionne -->
<td><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></td>
<td><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></td>
</tr>
</s:iterator>
</s:else>
</table> |
Méthode Execute de la classe d'action :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Override public String execute() throws Exception {
if(session.isEmpty()) {
return ERROR;
}
mesg = (String) session.get("mesg");
session.put("mesg", "");
DAO<Users> userDao = DAOFactory.getUsersDao();
DAO<Reports> reportDao = DAOFactory.getReportsDao();
DAO<Companies> compDao = DAOFactory.getCompaniesDao();
DAO<Depense> depDao = DAOFactory.getDepenseDao();
user = userDao.find((int) session.get("userMatricule"));
reports = ((ReportsDao) reportDao).findAllByUser(user.getIdUser());
companies = compDao.findAll();
depenses = depDao.findAll();
return SUCCESS;
} |
Les infos de la classe "Reports", pas de pbl mais quand il faut aller chercher les infos de la classe d'un des attributs, j'y arrive pas.
Dois-je modifier ma classe d'action ??
Une idée.
Merci d'avance pour votre aide.