在下面的代码中,testData
是HashMap
。我正在尝试使用spring:bind
标记绑定复选框。
我在spring:bind上遇到语法错误。你能告诉我我的代码中有什么问题吗?
<c:forEach items="${testData}" var="test" varStatus="loopStatus">
<spring:bind path="${testData[${loopStatus.index}]}.selected">
<input type="hidden" name="_${status.expression}">
<input type="checkbox" name="${status.expression}" value="true">
<c:if test="${status.value}">checked</c:if>
</spring:bind>
</c:forEach>
答案 0 :(得分:2)
我不确定您是否有其他语法错误,但首先要更改此内容:
<spring:bind path="${testData[${loopStatus.index}]}.selected">
代表
<spring:bind path="${testData[loopStatus.index]}.selected">
答案 1 :(得分:0)
你的spring:bind标签中的路径可能是错误的。我没告诉你正确的路径,因为你没有描述你绑定的对象。
您可能希望使用form:checkbox标记而不是spring bind。
答案 2 :(得分:0)
首先,在表达式语言中,${
开始表达,}
结束它。您不需要嵌套它们或任何内容,因此${testData[${loopStatus.index}]}
是您的语法错误,而.selected
不在您的表达式中,因此它应该只是:${testData[loopStatus.index].selected}
。
现在,在forEach
中,您的var
属性确定包含当前项的变量的名称。所以你很少需要使用varStatus
。您可以将测试设为${test.selected}
。
最后,您的checked
属性位于复选框输入元素之外!
所以:
<c:forEach items="${testData}" var="test">
<spring:bind path="${test.selected}">
<input type="hidden" name="_${status.expression}">
<input type="checkbox" name="${status.expression}" value="true" <c:if test="${status.value}">checked</c:if>>
</spring:bind>
</c:forEach>
(不确定你是否需要隐藏字段,我们没有使用任何一个复选框)。