Как отобразить данные действий в JSP? - PullRequest
0 голосов
/ 08 февраля 2012

Я использую тег <s:iterator> в моем JSP для отображения List объектов людей.

Я пытался создать ListOfPersons как List в классе действий вместе с геттером и сеттером. Я все еще не могу отобразить данные - как я могу это сделать?

<s:iterator value="ListOfpersons" status="stat">

Когда я пытался напечатать размер списка, я получал ноль.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Краткий ответ: сохранить информацию в запросе и получить доступ к ней в jsp.

Более длинный ответ:

  1. Создайте несколько объектов в сервлете (в вашем случае, действие).
  2. Сохранение объектов в некоторой области JSP ( HttpServletRequest.setAttribute () ).
  3. Переадресация (отправка) запроса на страницу JSP (это просто конфигурация Struts, вы уже делаете это).
  4. На странице JSP ссылайтесь на переменные (возможно, используя тег c: out или просто используйте выражение EL в тексте страницы JSP).

Некоторый код (стойки 1.x):

class Blah extends Action
{
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
  {
    ... do stuff
    request.setAttribute("Blammy", "Blammy Value");
    ... return some ActionForward.
  }
}

В JSP:

<span>The value of the Blammy variable is this here thing: ${Blammy}</span>

или

<span>The value of the Blammy variable is this here thing: <c:out value="${Blammy}"/></span>

Как только вы опустите основные понятия, просто установите атрибут запроса с помощью List и получите к нему доступ, используя тег итератора в вашем JSP.

0 голосов
/ 09 февраля 2012

Если я вас правильно понял, у вас возникли проблемы с отображением списка с помощью OGNL на страницах JSP. Вы должны назвать поля в формате YourListName[index].property. Тогда OGNL поймет, что у вас есть список с именем YourListName, а его элемент в index имеет property со значением, которое находится на его входе.

См. Пример ниже:

<table>
<s:iterator value="ListOfpersons" status="status">
<tr>
   <td><s:textfield name="ListOfpersons[%{#status.index}].firstname"/></td>
   <td><s:textfield name="ListOfpersons[%{#status.index}].lastname"/></td>
   <td><s:textfield name="ListOfpersons[%{#status.index}].age"/></td>
   <td><s:textfield name="ListOfpersons[%{#status.index}].sex"/></td>
</tr>
</s:iterator>
</table>
...