2012-04-17 70 views
1

一个项目刚刚传递给我,它使用JSP作为视图,而使用Spring 3.1作为控制器 - 两者我都没有什么经验,按照惯例,其中大约有4条评论整件事。不管怎样,我的问题是这样的,在更换JSP窗体嵌套复选框

<form:checkboxes path="class.list" items="${items}" delimiter="<br />" /> 

随着

<c:forEach var="item" varStatus="vs" items="${items}"> 
    <form:checkbox path="class.list" item="${item}" /> 
    // check if nesting is required, if so create div and nested list point to class.list.children 
</c:forEach> 

似乎产生了在我class.list附加元素没被选导致破进一步上。

任何指导将不胜感激。

+0

究竟出了什么问题? – axtavt 2012-04-17 09:11:00

+0

复选框指向的列表中没有从复选框中选择的其他实例,因此导致进一步中断。 我注意到使用窗体:复选框渲染一个单独的隐藏输入字段,因为forEach呈现每个复选框,我认为这会有一些负面影响..? – 2012-04-17 09:19:18

回答

1

我会建议留下形式:复选框完好无损,因为它是一种紧凑的方式来生成复选框。我不知道有一个令人信服的理由,如果它已经就位并正在工作,不要使用弹簧形式标签。至于你为什么看到隐藏的领域。请看这里: http://static.springsource.org/spring/docs/2.5.x/reference/view.html

这里是相关的部分: 你可能不希望看到的是每个复选框后面的额外隐藏字段。当HTML页面中的复选框未被选中时,一旦表单被提交,它的值将不会作为HTTP请求参数的一部分发送到服务器,所以我们需要在HTML中使用这个怪癖的解决方法,以便Spring表单数据绑定上班。复选框标签遵循现有的Spring约定,包括一个隐藏参数,每个复选框都带有一个下划线(“_”)。通过这样做,你可以有效地告诉Spring:“复选框在表单中可见,并且我希望表单数据将被绑定到的对象反映复选框的状态,而不管它是什么”。

希望这会有所帮助。