2010-12-14 76 views
0

J'ai plusieurs ArrayLists avec une longueur variable et parfois une valeur nulle. Cette ArrayList contient un tas d'objets. La table doit avoir des colonnes basées sur (certains) attributs de l'objet. Et la table devrait être affichée sur un jsp.Conversion d'une ArrayList <someObjects> en une table HTML

J'ai deux idées, l'une est d'utiliser un tag JSTL l'autre est d'utiliser JavaScript. Et les suggestions de la bibliothèque sont les bienvenues.

+0

Vous êtes JavaScript confusion avec scriptlets JSP. – BalusC

+0

En fait, je ne parlais pas de JavaScript, mais Stephen P (ci-dessous) a déjà précisé que JavaScript n'a pas accès aux objets Java. –

Répondre

0

JSTL est mieux,

Javascript, vous devriez éviter autant que possible,

Je ne sais pas comment vous allez rendre datatable en utilisant un script java et Collection

Comment utilisez jstl avec une collection qui a été démontrée par Bozho dans le même fil.

+0

Pourquoi éviter JS autant que possible? S'il y a déjà une dépendance sur JS, JS peut vous donner une grille de données avec beaucoup plus de fonctionnalités que jstl (html seul). Tout ce dont vous avez besoin est de passer la liste en tant que JSON. Vous pouvez utiliser quelque chose comme la grille Ext-JS pour les colonnes triables, filtrables et réutilisables ... http://dev.sencha.com/deploy/dev/examples/grid/grid-plugins.html –

+0

@Juan Mendes Si c'est possible à faire avec JSTL éviter js car javascript va charger le navigateur aussi pas aussi fiable. et le cas OP parle est le mieux adapté en utilisant JSTL –

+0

life.java Votre argument n'a pas beaucoup de sens pour moi. Si votre site doit fonctionner avec JS désactivé, cela peut être vrai, sinon, votre commentaire ressemble à quelqu'un qui ne connaît pas beaucoup JS. Je, par exemple, exige JS puisque toute l'interaction est basée sur AJAX. Même si JS n'est pas requis, la grille que j'ai suggérée supporte également l'amélioration progressive. Vous pouvez générer la table avec jstl et l'améliorer pour être triable, filtrable, si le client prend en charge JS. –

1

JSTL est la norme, façon préférée (à moins que vous devez le charger via ajax, par exemple)

<table> 
<tr><td>Foo header</td><td>Bar header</td></tr> 
<c:forEach items="${yourRequestScopedArrayList}" var="obj"> 
    <tr> 
     <td>${obj.foo}</td> 
     <td>${obj.bar}</td> 
    </tr> 
</c:forEach> 
</table> 
+0

Je pense que ce devrait être des articles avec un s. – Enrique

+0

oui, faute de frappe. Merci. – Bozho

+0

Lorsque j'exécute le code $ {obj.getItemID()} il me dit que "La fonction getItemID doit être utilisée avec un préfixe quand un espace de noms par défaut n'est pas spécifié". Que puis-je faire? \ –

0

Javascript n'a pas accès aux objets Java qui vivent (je présume) sur le serveur. Le code du serveur peut rendre les ArrayLists disponibles pour le JSP, qui peut ensuite les boucler avec une balise JSTL forEach. La manière dont vous faites en sorte que les ArrayLists soient disponibles dépend de l'infrastructure que vous utilisez, mais la méthode de servlet simple consiste simplement à définir un attribut à partir de la méthode doPost.

request.setAttribute("list1", arrayList1); 

La boucle serait quelque chose comme

<table> 
<tr><th>Column 1</th> <th>Column 2</th> <th>Column 3</th></tr> 
<c:forEach var="row" items="${list1}"> 
    <tr><td>${row.col1data}</td> <td>${row.col2data}</td> <td>${row.col3data}</td></tr> 
</c:forEach> 
</table>