1

我的 web 应用程序中使用 spring mvc 有复选框标记。复选框是从控制器中的地图创建的,如下所示:

地图 demOrgs = createMap(); model.addAttribute("demOrgs", demOrgs); // 示例 : (1, my-description)

1 --> 将是复选框 my-description 的值 --> 将是复选框的标签

在我的 jsp 中:

<form:form commandName="myBean" method="POST"  >
   <form:checkboxes items="${demOrgs}"  path="demOrg" element='div class="checkboxes"' />
</form:form>

我的 bean 只有一个字段:

字符串 demOrg;

当我发送表单时,demOrg 属性具有单击的复选框的值,例如:(1,5,8)

当我进入应用程序的下一步时,我将 myBean 存储在会话中。但是当我返回时,我希望复选框被选中,仍然被选中,而不是那样。

当复选框的绑定值是布尔值时,总是可以工作,但我正在绑定自定义值:

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

......

有谁知道如何做到这一点?

谢谢大家!!

4

3 回答 3

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 注释方法参数。

于 2013-07-08T20:31:36.733 回答
0

虽然“myBean”存储在会话中,但它不是在运行控制器时再次从数据库中重新加载吗?

于 2013-07-08T12:50:16.900 回答
0

我认为诀窍是确保您的 demOrg 属性实际上是一个集合。在此处查看 复选框参考。特别是,文字说:

通常,绑定属性是一个集合,因此它可以保存用户选择的多个值。

于 2013-07-04T18:11:26.067 回答