我遇到了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
控制器,即使检查!
有任何想法吗?
这可能有点迟,但也许它会帮助其他人。
当您为布尔值自动生成getter和setter时,通常会生成没有'is'前缀。
例如,在上面提到的情况下,生成的'isAgreeTermsAndConditions'属性的setter可能如下:'setAgreeTermsAndConditions()',注意方法中没有'is'前缀。吸气剂也是如此。
由于使用属性getter和setter名称查找并绑定到model属性,因此如果存在属性名称和getter / setter不匹配,则复选框可能不会显示在UI上或无法正常工作。
确保属性'isAgreeTermsAndConditions'具有以下getter / setters方法名称:getIsAgreeTermsAndConditions()/ setIsAgreeTermsAndConditions(...)