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:
L'action:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
La classe qui traite les resultat de la requete:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
et la page jsp qui pose problème est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 si j'enléve les iterate imbriqués il m'affiche les noms de colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
donc je pense que le problème vient des deux iterate imbriqués .
SVP aider moi, je galère.![]()
Merci d'avance.
Partager