Как вы перебираете список объектов?
У меня есть класс пользователя, в котором есть имя пользователя String. У меня есть список пользователей, которые я пытаюсь отобразить в таблице, используя
<s:iterator value="users" id="list">
<tr>
<td><s:property value="#list.username" /></td>
<td></td>
<td></td>
<td></td>
</tr>
</s:iterator>
Строки отображаются в правильном количестве раз, поэтому они правильно повторяются в моем списке. Однако я не знаю, как получить доступ к свойству имени пользователя, чтобы отобразить его. Очевидно, что то, что у меня выше, неверно... Любые идеи?
Ответы
Ответ 1
Во-первых, в 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>
UPDATE: я скорректировал бит о #, это было нормально.
Ответ 2
Вы можете сделать это следующим образом:
<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, эта новая пользовательская ссылка существует в
область действия "действие" по умолчанию - ActionContext. Как вы можете
см., мы затем ссылаемся на него с помощью оператора #.
Ответ 3
Вы можете использовать JSTL со Struts. Он имеет тег <c:forEach>
в своей основной библиотеке, который позволит вам легко проходить через список или любую другую коллекцию.
Ответ 4
Struts 1.x заботится о ваших внутренних свойствах, подобных этому.
< логика: iterate id = "user" name= "userList" > < bean: записать свойство = "$ {имя_пользователя}" /" > </Логика: итерация >
Я предполагаю, что ур пример у может иметь. Вам может не понадобиться "#list". снова в атрибуте value
< s: iterator value = "users" id = "list" > < s: значение свойства = "userName" /" > </s: iterator >
Ответ 5
<s:iterator value="users" var="eachUser">
<div>
<s:property value="#eachUser.username">
</div>
</s:iterator>
Отметьте этот для более таких примеров