Spring mvc и итерации по списку как объект поддержки формы - PullRequest
1 голос
/ 09 марта 2012
<form:form id="myFRM" action="${myURL}" method="POST" modelAttribute="myPOJO">
<c:set var="i" scope="page" value="0"/>
<c:forEach items="${myPOJO.myLIST}" var="myItem">
  <tr class="ui-state-default" >
  <td><form:checkbox path="myLIST[${i}].aBool" value="true"/></td>
 </tr>
 <c:set var="i" value="${i + 1}" scope="page"/>
</c:forEach>

есть ли лучший способ сделать это?

myPOJO - это класс, содержащий список, который я создал исключительно для этой цели - есть ли способ напрямую ссылаться на список как на объект поддержки формы?

Ответы [ 2 ]

4 голосов
/ 09 марта 2012

Тег c:forEach имеет атрибут с именем varStatus.Это присваивает имя переменной состояния цикла.Эта переменная имеет как индекс (на основе нуля), так и количество (на основе одного) текущей итерации.

Попробуйте:

<c:forEach items="${myPOJO.myLIST}" var="myItem" varStatus="loopStatus">

и это:

<form:checkbox path="myLIST[${loopStatus.index}].aBool"/>

и вам не понадобится дополнительная переменная i.

Кроме того, я подозреваю, что вам не нужна часть value="true" для флажка.

1 голос
/ 09 марта 2012

Вы оцениваете выражение $ {myPojo.fooBool}, которое возвращает строку "false".

На практике вы пишете:

<form:checkbox path="false" value="true"/>

Итак, Spring ищет в вашем bean-компоненте свойство с именем false (вместо «fooBool»).

Попробуйте написать:

<form:checkbox path="fooBool" value="true"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...