复选框标记spring mvc和binding

时间:2013-07-04 06:10:26

标签: spring spring-mvc checkbox tags

我的网络应用程序中有弹簧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>

.....

有谁知道怎么做?

感谢所有!!

3 个答案:

答案 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”存储在会话中,但是当控制器运行时是不是会再次从数据库重新加载?