J'ai une classe d'utilisateurs qui contient un nom d'utilisateur String. J'ai une liste d'utilisateurs que j'essaie d'afficher dans un tableau en utilisant
<s:iterator value="users" id="list">
<tr>
<td><s:property value="#list.username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
</s:iterator>
Les lignes sont affichées le bon nombre de fois, donc cela parcourt correctement ma liste. Cependant, je ne sais pas comment accéder à la propriété de nom d'utilisateur pour l'afficher. Évidemment, ce que j'ai ci-dessus n'est pas correct ... Des idées?
Premièrement, dans Struts2 2.1.x, l'attribut id
est obsolète. var
devrait être utilisé à la place ( ref )
Je pense que le # est mal utilisé là-bas. En outre, "liste" semble un mauvais nom pour ce qui doit être attribué à chaque itération ... Je pense que "utilisateur" est plus approprié.
IIRC, la syntaxe est
<s:iterator value="users" var="user">
... <s:property value="#user.username" />
</s:iterator>
De plus, vous n'avez pas besoin d'attribuer l'élément actuel dans l'itérateur pour un cas aussi simple. Cela devrait également fonctionner:
<s:iterator value="users">
... <s:property value="username" />
</s:iterator>
Aussi, vous voudrez peut-être essayer ceci:
<s:iterator value="users">
... <s:property /> <!-- this outputs the full object, may be useful for debugging -->
</s:iterator>
MISE À JOUR: j'ai corrigé le bit sur le #, c'était ok.
Tu peux faire comme ça
<s:iterator value="users" >
<tr>
<td><s:property value="username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
Remarquez que pas besoin de #list il.
L'autre façon est
<s:iterator value="users" var="user">
<tr>
<td><s:property value="#user.username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
insetead de id donnez le comme var Comme nous ne spécifions pas de portée pour var, cette nouvelle référence user existe dans la portée par défaut «action» - le ActionContext. Comme vous pouvez le voir, nous faisons référence alors avec l'opérateur #.
Vous pouvez utiliser JSTL avec Struts. Il a une balise <c:forEach>
dans sa bibliothèque principale qui vous permettra de parcourir facilement une liste ou toute autre collection.
<s:iterator value="users" var="eachUser">
<div>
<s:property value="#eachUser.username">
</div>
</s:iterator>
Vérifiez this pour plus d'exemples de ce genre