Stringユーザー名を含むUserクラスがあります。を使用してテーブルに表示しようとしているユーザーのリストがあります
<s:iterator value="users" id="list">
<tr>
<td><s:property value="#list.username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
</s:iterator>
行は適切な回数表示されているので、リストを適切に繰り返し処理しています。ただし、usernameプロパティにアクセスして表示する方法がわかりません。明らかに私が上に持っているものは正しくありません...何かアイデアはありますか?
まず、Struts2 2.1.xでは、id
属性が非推奨になり、代わりにvar
を使用する必要があります( ref )
#はそこで誤用されていると思います。 その上、「リスト」は各反復で割り当てられるものの悪い名前のようです...私は「ユーザー」がより適切だと思います。
IIRC、構文は
<s:iterator value="users" var="user">
... <s:property value="#user.username" />
</s:iterator>
さらに、このような単純なケースでは、イテレータで現在のアイテムを割り当てる必要はありません。これも機能するはずです:
<s:iterator value="users">
... <s:property value="username" />
</s:iterator>
また、これを試してみることもできます。
<s:iterator value="users">
... <s:property /> <!-- this outputs the full object, may be useful for debugging -->
</s:iterator>
更新:#に関するビットを修正しました。問題ありませんでした。
あなたはこのようにすることができます
<s:iterator value="users" >
<tr>
<td><s:property value="username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
#listが必要ないことに注意してください。
他の方法は
<s:iterator value="users" var="user">
<tr>
<td><s:property value="#user.username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
idの挿入図varとして指定します。varのスコープを指定しないため、この新しいuser参照はデフォルトの「アクション」スコープであるActionContextに存在します。ご覧のとおり、次に#演算子を使用して参照します。
JSTLはStrutsで使用できます。 <c:forEach>
コアライブラリ内のタグ。これにより、リストやその他のコレクションを簡単に繰り返すことができます。
<s:iterator value="users" var="eachUser">
<div>
<s:property value="#eachUser.username">
</div>
</s:iterator>
このような例については、 this を確認してください