C. *_*oss 10 spring spring-mvc bean-validation
是否可以在Spring中使用JSR-303 bean验证和传统验证(该类型的单个验证器类)?如果是这样,设置它需要什么配置?
我已经尝试了参考的说明.
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new DualEntryValidator());
}
@RequestMapping(value="/dualEntry.htm", method = RequestMethod.POST)
public ModelAndView handlePost(@Valid DualEntryForm form, BindingResult result) {
ModelAndView modelAndView = new ModelAndView("dualEntry", getCommonModel());
if (!result.hasErrors()){
//do logic
return modelAndView;
}else {
modelAndView.addObject("dualEntryForm", form);
return modelAndView;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用我的自定义Validator 或 JSR-303验证,但不是两者.如果我在示例中使用initBinder,则使用自定义Validator.如果我删除它,则使用JSR-303 bean验证.我怎么能同时使用?
我按照这里的说明完成了这个:
http://blog.jteam.nl/2009/08/04/bean-validation-integrating-jsr-303-with-spring/
请参阅"享受两个世界"部分.不久,您明确地从Spring验证器运行JSR303验证,"加入"基于注释和自定义验证逻辑的JSR303验证结果.
我意识到这已经很老了,但是我的工作对我的代码的干扰最小
更改 binder.setValidator(new DualEntryValidator());
至
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addValidators(new DualEntryValidator());
}
Run Code Online (Sandbox Code Playgroud)
随着setValidator()您将JSR-303验证器替换为您的验证器.有了addValidator(),JSR-303验证器被调用,你的也是如此.
你需要确保你的验证程序不与你的JSR-303重叠@NotNull,@Min,@Max等注释,否则你会得到增加重复的错误消息.
| 归档时间: |
|
| 查看次数: |
5006 次 |
| 最近记录: |