2011-03-05 1 views
5

Je suis nouveau à JSTL. Comment puis-je utiliser JSTL <c:foreach> dans jsp si je passe ci-dessous bean exemplecomment accéder à la liste de tableau dans jsp, si je passe le bean

class B{ 
    private String value=""; 
    private ArrayList arrayVals; 
    public String getvalue(){ 
     return value; 
    } 
    public String getarrayVals(){ 
     return arrayVals; 
    } 
} 

Je passerai Bean « B » seulement. J'ai essayé comme ci-dessous, mais jsp pas compilé. Aidez-moi, s'il vous plaît.

<c:forEach items="${B.getarrayVals}" var="book"> 
    <c:out value="{book.title}"/> 
</c:forEach> 
+0

Quelle erreur obtenez-vous? – krock

Répondre

10

Tout d'abord, getarrayVals() doit être orthographié getArrayVals(), et il doit retourner une liste, pas une chaîne, évidemment.

Supposons maintenant le servlet ou d'action définit un attribut « b » de type B comme ceci:

request.setAttribute("b", theBInstance); 

et transmet ensuite à un JSP, vous pouvez accéder à la liste dans l'attribut « b » comme ceci:

${b.arrayVals} 

Vous devez vous référer à l'instance B par le nom de l'attribut request, et non par son nom de classe. Si vous nommez l'attribut foo, l'utilisation doit utiliser ${foo.arrayVals}. Ceci imprimera simplement à toString de la liste. Si vous voulez obtenir l'élément à l'index 3 de la liste, vous pouvez utiliser

${b.arrayVals[3]} 

Et si vous voulez itérer sur les éléments de la liste, utilisez le répertoire c: forEach construction:

<c:forEach items="${b.arrayVals}" var="element"> 
    The element value is ${element} <br/> 
</c:forEach> 
Questions connexes