Spring MVC表单:复选框无效

时间:2014-01-21 17:18:12

标签: forms jsp spring-mvc checkbox binding

我遇到了Spring form:checkbox标记的问题。

我目前有一个JSP页面,其form:checkbox标记绑定到Java boolean字段。当我在复选框中打勾并提交表单时,值为false

这是我的JSP上的复选框:

<form:checkbox id="field_termsandconditions" path="agreeTermsAndConditions" />

我的GET控制器:

@RequestMapping(value = "/page1.htm", method = RequestMethod.GET)
public String getPage(HttpServletRequest request, ModelMap model) {
    model.addAttribute("MyObject", new MyObject());
    return getURL(request);
}

我的POST控制器:

@RequestMapping(value = "/page1.htm", method = RequestMethod.POST)
public String processPage(HttpServletRequest request,
    HttpServletResponse response,
    ModelMap model,
    MyObject myObject,
    BindingResult bindingResult) {

        System.out.println(myObject.isAgreeTermsAndConditions);
}

myObject.isAgreeTermsAndConditions在遇到false控制器时始终为POST

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这可能有点迟了,但也许会对其他人有所帮助。

当您自动生成布尔值的getter和setter方法时,通常会在没有'is'前缀的情况下生成它。

例如,在上述情况下,为'isAgreeTermsAndConditions'属性生成的设置器可能如下:'setAgreeTermsAndConditions()',请注意该方法中没有'is'前缀。吸气剂也是如此。

由于使用了属性获取器和设置器名称来查找并绑定到模型属性,因此如果属性名称和获取器/设置器不匹配,则该复选框可能不会显示在UI上或无法正常工作。

确保属性“ isAgreeTermsAndConditions”具有以下getter / setter方法名称:getIsAgreeTermsAndConditions()/ setIsAgreeTermsAndConditions(...)