[ struts-layout ]Resultat d'une requete sur plusieurs pages
Grâce aux différents posts concernant le sujet, j'essaie d'utiliser struts-layout dans une page JSP pour afficher un tableau sur plusieurs pages.
Au départ, j'utilisait :
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
| <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<title>Mon appli</title>
<link rel="stylesheet" href="./vues/style.css" type="text/css">
</head>
<body>
<div>
<table>
<logic:iterate id="ligne" name="resReq">
<tr>
<logic:iterate id="valeur" name="ligne">
<logic:present name="valeur">
<td class="tablecel"><bean:write name="valeur" /></td>
</logic:present>
<logic:notPresent name="valeur">
<td class="tablecel"></td>
</logic:notPresent>
</logic:iterate>
</tr>
</logic:iterate>
</table>
</div>
</body>
</html> |
Sachant que resReq est un attribut de requete initialisé dans une classe Action :
Code:
1 2
| ArrayList alRes = bdd.Query();
request.setAttribute("resReq", alRes); |
Et que la fonction Query() retourne un ArrayList d'ArrayList qui contient le résultat d'une requete "SELECT col1,col2,col3 FROM matable"
J'obtiens bien les résultats sous forme d'un tableau, de 3 colonnes et environ 1000 lignes :
A1 | A2 | A3
B1 | B2 | B3
C1 | C2 | C3
...
Je voudrais donc pouvoir afficher ce tableau sur plusieurs pages, pour être plus lisible.
J'ai donc : importé sous Eclipse le struts-layout.jar,
ajouté les actions treeview et sort dans struts-config.xml,
ajouté struts-layout.jar dans le répertoire WEB-INF/lib,
ajouté struts-layout.tld dans le répertoire WEB-INF,
copié les répertoire config et images à la racine de mon appli
Et j'ai remplacé le code de ma JSP par :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
<html>
<head>
<title>Mon appli</title>
<link rel="stylesheet" href="./vues/style.css" type="text/css">
</head>
<body>
<div>
<layout:pager maxPageItems="10" width="80%">
<layout:collection name="resReq" styleClass="ARRAY">
<layout:collectionItem title="col1" />
<layout:collectionItem title="col2" />
<layout:collectionItem title="col3" />
</layout:collection>
</layout:pager>
</div>
</body>
</html> |
Mais là, il y a bien un tableau qui s'affiche, de 3 colonnes et 100 lignes et sur 100 pages, mais chaque cellule contient la ligne complète du résultat de ma requête:
col1 | col2 | Col3
A1,A2,A3 | A1,A2,A3 | A1,A2,A3
B1,B2,B3 | B1,B2,B3 | B1,B2,B3
C1,C2,C3 | C1,C2,C3 | C1,C2,C3
...
Si je modifie la fonction Query() pour quelle retourne un "simple" ArrayList qui contient le résultat de la requete, j'obtiens :
col1 | col2 | Col3
A1 | A1 | A1
A2 | A2 | A2
A3 | A3 | A3
B1 | B1 | B1
B2 | B2 | B2
B3 | B3 | B3
C1 | C1 | C1
C2 | C2 | C2
C3 | C3 | C3
...
Comment faire pour séparer les colonnes ?