Spring MVC表单:复选框无效

问题描述 投票:3回答:1

我遇到了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控制器,即使检查!

有任何想法吗?

forms jsp spring-mvc checkbox binding
1个回答
0
投票

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

当您为布尔值自动生成getter和setter时,通常会生成没有'is'前缀。

例如,在上面提到的情况下,生成的'isAgreeTermsAndConditions'属性的setter可能如下:'setAgreeTermsAndConditions()',注意方法中没有'is'前缀。吸气剂也是如此。

由于使用属性getter和setter名称查找并绑定到model属性,因此如果存在属性名称和getter / setter不匹配,则复选框可能不会显示在UI上或无法正常工作。

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

© www.soinside.com 2019 - 2024. All rights reserved.