Как вы перебираете список объектов?

У меня есть класс пользователя, в котором есть имя пользователя 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>  

Отметьте этот для более таких примеров