Spring:用复选框绑定

时间:2011-03-29 10:48:59

标签: jsp spring-mvc jstl

在下面的代码中,testDataHashMap。我正在尝试使用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> 

3 个答案:

答案 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>

(不确定你是否需要隐藏字段,我们没有使用任何一个复选框)。