我的网络应用程序中有弹簧mvc的复选框标签。复选框是从控制器中的地图创建的,如下所示:
Map demOrgs = createMap(); model.addAttribute(“demOrgs”,demOrgs); //例如:(1,my-description)
1 - >将是复选框的值 我的描述 - >将是复选框的标签
在我的jsp中:
<form:form commandName="myBean" method="POST" >
<form:checkboxes items="${demOrgs}" path="demOrg" element='div class="checkboxes"' />
</form:form>
我的bean只有一个字段:
String demOrg;
当我发送表单时,demOrg属性点击了复选框的值,例如:(1,5,8)
当我进入应用程序的下一步时,我将myBean存储在会话中。但是当我返回时,我希望复选框已经过检查,仍然检查过,并且不是那样。
当checkbox的绑定值是一个布尔值时,总是有效但我绑定了一个自定义值:
<input id="demOrg1" type="checkbox" value="2" name="demOrg">
<label for="demOrg1">My label description</label>
<input id="demOrg2" type="checkbox" value="3" name="demOrg">
<label for="demOrg2">My label description 2</label>
.....
有谁知道怎么做?
感谢所有!!
答案 0 :(得分:1)
控制器方法的签名是什么样的?您是否将myBean作为方法签名参数包含在内,并使用@ModelAttribute注释?
类似的东西:
@RequestMapping(......)
public String myController (@ModelAttribute MyBeanType myBean, Model model) {
Map demOrgs = createMap();
model.addAttribute("demOrgs", demOrgs);
model.addAttribute(myBean);
}
如果您正在使用JSR-303 bean验证,也可以使用@Valid注释方法参数。
答案 1 :(得分:0)
我认为诀窍是确保你的demOrg属性实际上是一个集合。看看 checkbox reference在这里。特别是,文字说:
通常,绑定属性是一个集合,因此它可以包含用户选择的多个值。
答案 2 :(得分:0)
虽然“myBean”存储在会话中,但是当控制器运行时是不是会再次从数据库重新加载?