Ale*_*lex 1 java spring spring-mvc spring-validator
我正在尝试验证包含电子邮件的 Spring Bean,但是当请求 Bean 中的电子邮件作为空字符串出现时,验证器和 BindingResult 都没有显示任何错误。\n请参阅以下代码:
\n\n豆角,扁豆:
\n\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.stereotype.Component;\nimport org.springmodules.validation.bean.conf.loader.annotation.handler.Email;\nimport org.springmodules.validation.bean.conf.loader.annotation.handler.NotEmpty;\n\n@Component("grouponRedemptionFormBean")\n@Scope("prototype")\npublic class GrouponRedemptionBean {\n\n@NotEmpty(message = "Please enter your email addresss.")\n@Email(message = "Please correct your email.")\nprivate String email;\n \xe2\x80\xa6\n}\nRun Code Online (Sandbox Code Playgroud)\n\n控制器:
\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.validation.Valid;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.validation.BeanPropertyBindingResult;\nimport org.springframework.validation.BindingResult;\nimport org.springframework.validation.Errors;\nimport org.springframework.validation.Validator;\nimport org.springframework.web.bind.annotation.ModelAttribute;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestMethod;\nimport org.springframework.web.bind.annotation.RequestParam;\n\n\n@Controller\npublic class GrouponVoucherRedemptionController {\n\n@Autowired\n@Qualifier("defaultBeanValidator")\nprivate Validator validator;\n\n@RequestMapping(value="/groupon-redemption.ep", method=RequestMethod.POST)\npublic String PostGrouponRedemption(@Valid @ModelAttribute GrouponRedemptionBean grouponRedemptionBean, BindingResult bindingResult,\nHttpServletRequest request, HttpServletResponse response, Model model){\n\n Errors errors = new BeanPropertyBindingResult(grouponRedemptionBean, "grouponRedemptionFormBean");\n validator.validate(grouponRedemptionBean, errors);\n if(errors.hasErrors()) {\n bindingResult.addAllErrors(errors);\n }\n if (bindingResult.hasErrors()) {\n return GROUPON_REDEMPTION_VIEW;\n } \n...\nRun Code Online (Sandbox Code Playgroud)\n\nXML 配置:
\n\n<mvc:annotation-driven />\nRun Code Online (Sandbox Code Playgroud)\n
您的参数顺序错误 -BindingResult必须紧接在模型对象之后(GrouponRedemptionBean在您的情况下)。请参阅文档:
或参数必须跟在立即绑定的模型对象后面,因为方法签名可能有多个模型对象,Spring 将为每个模型对象创建一个单独的
Errors实例,因此以下示例将不起作用:BindingResultBindingResultBindingResult 和 @ModelAttribute 的顺序无效。
Run Code Online (Sandbox Code Playgroud)@RequestMapping(method = RequestMethod.POST) public String processSubmit(@ModelAttribute("pet") Pet pet, Model model, BindingResult result) { ... }注意,和
Model之间有一个参数。要使其正常工作,您必须按如下方式重新排序参数:PetBindingResultRun Code Online (Sandbox Code Playgroud)@RequestMapping(method = RequestMethod.POST) public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result, Model model) { ... }
| 归档时间: |
|
| 查看次数: |
7454 次 |
| 最近记录: |