deux logic:iterate pour afficher un vector imbriqué dans un autre
Bonjour,
Je fais un requeteur libre avec struts et dont je veu afficher les resultats de la requete sur la page html sous forme d'un tableau.
J'ai un problème d'affichage de table où ses lignes sont stocker dans un vector et toutes les lignes (des Vectors) sont stockées dans un autre Vector.
J'ai 3 classes (Le bean, l'action et la classe qui traite les resultat de la requete).
Voici des extraits de ces classes:
Le bean:
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
| public class Result {
public Result(){
}
private ArrayList nomColonnes;
private Vector lesChamps;
private String intitules;
public ArrayList getNomColonnes() {
return nomColonnes;
}
public void setNomColonnes(ArrayList nomColonnes) {
this.nomColonnes = nomColonnes;
}
public Vector getLesChamps() {
return lesChamps;
}
public void setLesChamps(Vector lesChamps) {
this.lesChamps = lesChamps;
}
public String getIntitules() {
return intitules;
}
public void setIntitules(String intitules) {
this.intitules = intitules;
}
} |
L'action:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/dmc/ds");
DynaValidatorForm daf=(DynaValidatorForm) form;
Result client = new Result();
String requesta=(String) daf.get("query");
if(!requesta.equals("") && requesta != null){
client=ClientDAO.queryClient(ds,requesta,(String) daf.get("intitule"));
request.setAttribute("clients", client);
}
return mapping.findForward("result"); |
La classe qui traite les resultat de la requete:
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 36 37 38
| public static Result queryClient(DataSource ds,String criteria, String intitul) throws Exception
{
Result client=new Result();
DataBaseDomaineCredit dataBase = new DataBaseDomaineCredit(ds,"");
dataBase.openConnection();
ArrayList lista = new ArrayList();
try {
if(criteria.toUpperCase().startsWith("SELECT")){
ResultSet resultat = dataBase.executeQuery(criteria);
ResultSetMetaData metadata= resultat.getMetaData();
for(int i=1;i<=metadata.getColumnCount();i++){
lista.add(metadata.getColumnName(i));
}
client.setNomColonnes(lista);
Vector vec=new Vector();
while(resultat.next()){
Vector lista1=new Vector();
for(int i=1;i<=metadata.getColumnCount();i++){
lista1.add(resultat.getString(metadata.getColumnName(i)));
}
vec.add(lista1);
}
client.setLesChamps(vec);
client.setIntitules(intitul);
}
}
catch (Exception e) {
System.out.println(e.toString());
}
dataBase.closeResultSet();
dataBase.closeConnection();
return client; |
et la page jsp qui pose problème est:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <logic:present name="clients">
<table border='1' cellspacing="0" cellpadding="0">
<tr>
<logic:iterate name="clients" id="lesColonnes" property="nomColonnes">
<td class="header">
<bean:write name="lesColonnes"/>
</td>
</logic:iterate>
</tr>
<logic:iterate name="clients" id="toto" property="lesChamps">
<tr>
<logic:iterate name="toto" id="lesChamps" >
<td><bean:write name="lesChamps"/></td>
</logic:iterate>
</tr>
</logic:iterate>
</table>
</logic:present> |
Et si j'enléve les iterate imbriqués il m'affiche les noms de colonnes.
donc je pense que le problème vient des deux iterate imbriqués .
SVP aider moi, je galère.:(
Merci d'avance.