<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是一个包含列表的类,我纯粹是为了这个目的创建的 - 有没有办法直接引用列表作为表单支持对象?
答案 0 :(得分:4)
c:forEach
标记有一个名为varStatus
的属性。这为循环状态变量指定了一个名称。此变量具有当前迭代的索引(基于零)和计数(基于一个)。
试试这个:
<c:forEach items="${myPOJO.myLIST}" var="myItem" varStatus="loopStatus">
和此:
<form:checkbox path="myLIST[${loopStatus.index}].aBool"/>
您不需要额外的i
变量。
另外,我怀疑你不需要value="true"
部分来复选框。
答案 1 :(得分:1)
您正在评估表达式$ {myPojo.fooBool},它返回字符串“false”。
在实践中,你写的是:
<form:checkbox path="false" value="true"/>
所以Spring正在你的bean中寻找名为“false”的属性(而不是寻找“fooBool”)。
尝试写作:
<form:checkbox path="fooBool" value="true"/>