【问题标题】:Checkboxes tag spring mvc and binding复选框标记spring mvc和绑定
【发布时间】:2013-07-04 06:10:25
【问题描述】:

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

.....

有人知道怎么做吗?

谢谢大家!!

【问题讨论】:

    标签: spring spring-mvc checkbox tags


    【解决方案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 注释方法参数。

    【讨论】:

    • 是的,我的属性是用@ModelAttribute 注释的。当我有一些时间时,我会尝试将 String 属性更改为某个集合对象..
    【解决方案2】:

    我认为诀窍是确保您的 demOrg 属性实际上是一个集合。查看 checkbox reference 在这里。特别是,上面写着:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-05-27
        • 1970-01-01
        • 1970-01-01
        • 2018-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多