2009-08-24 5 views
0

J'ai du code! Le code ressemble à ceci:La balise Struts forEach ne se répète pas via ArrayList

<c:forEach var="element" items="%{serviceList.getServices()}"> 
     <p>Hello!</p> 
</c:forEach> 

"ServiceList" est un haricot, avec une méthode sur elle appelée GetServices(). getServices() retourne un ArrayList, donc j'ai naturellement supposé que le code ci-dessus prendrait l'arraylist, et itérer à travers elle en mettant chaque élément de la liste dans la variable 'element'.

Pas si! . Quand je regarde la page, Bonjour est imprimé une fois (la taille de GetServices() est 2, et je peux montrer directement en l'imprimant sur la page

La balise elle-même fonctionne:

<c:forEach begin="1" end="10">Hello, World!<br></c:forEach> 

Imprime ce que vous attendez.Il doit donc être quelque chose à voir avec les éléments que je passe. Toute aide?

Oh, et cela utilise JSTL 1.1.2, Struts 2.1.6, et la dernière version de Java

+1

Vous utilisez la balise jstl-core forEach, qui ne fait pas partie de Struts. La balise Struts fournit la même fonctionnalité. – Salandur

Répondre

4

Vous avez une faute de frappe, vous devriez utiliser ${variable name} comme ceci:

<c:forEach var="element" items="${serviceList.services}"> 
    <p>Hello!</p> 
</c:forEach> 

Ensuite, le comportement sera comme prévu.

+0

EL (à partir de JSP 2.1) ne vous permet pas d'appeler des méthodes sur des instances; vous pouvez uniquement mapper des fonctions personnalisées en tant que méthodes statiques. (Bien qu'un meilleur support de méthode soit disponible dans JEE6 et al.) – McDowell

+0

@McDowell - merci, il suffit de le copier de la question - je vais le modifier et le corriger. –

0
${serviceList.services} 

Votre syntaxe de langage d'expression est incorrecte. Voir la partie EL du JSP 2.1 spec pour plus d'informations.

Questions connexes