Java SpringMVC:表单验证的集中处理
我有一个应用程序,它有许多数据输入屏幕,因此有许多控制器类接受各种形式的POST数据。表单使用javax验证注释,控制器使用BindingResult检查错误。一些表单使用自定义验证器(实现Springs ValidationUtils)进行更多验证 我现在正尝试使用@ControllerAdvice方法将表单验证(删除每个控制器中重复的验证代码)集中到一个单独的类中,并从控制器方法的参数中删除BindingResult。删除绑定结果会引发ControllerAdvice类捕获的错误 除了在ControllerAdvice类的BindingResult中只存在诸如@Max、@Min之类的基本注释,而不存在来自自定义验证器的更复杂的验证之外,这一切都可以很好地工作 有没有办法将自定义验证错误放入ControllerAdvice类?您还采取了哪些其他方法来集中处理表单验证 谢谢 代码如下: EmployeeController.java EmployeeFormValidator.java ExceptionControllerAdvice.java除外Java SpringMVC:表单验证的集中处理,java,spring,validation,model-view-controller,Java,Spring,Validation,Model View Controller,我有一个应用程序,它有许多数据输入屏幕,因此有许多控制器类接受各种形式的POST数据。表单使用javax验证注释,控制器使用BindingResult检查错误。一些表单使用自定义验证器(实现Springs ValidationUtils)进行更多验证 我现在正尝试使用@ControllerAdvice方法将表单验证(删除每个控制器中重复的验证代码)集中到一个单独的类中,并从控制器方法的参数中删除BindingResult。删除绑定结果会引发ControllerAdvice类捕获的错误 除了在Co
如果您使用的是Spring,那么您所要做的就是注释@Valid。剩下的将是露营;在验证器中隔离。请将代码发布到reproduce@HithamS.AlQadheeb-刚刚将其附在帖子上,谢谢如果您使用Spring,那么您所要做的就是注释@Valid。剩下的将是露营;在验证器中隔离。请将代码发布到reproduce@HithamS.AlQadheeb-刚刚将其附在帖子上,谢谢
@RequestMapping(value = "/save", method = RequestMethod.POST)
public @ResponseBody String save(@Valid @RequestBody EmployeeForm form,
HttpServletRequest request)
{
}
@Component
public class EmployeeFormValidator implements Validator {
@Override
public boolean supports(Class clazz) {
return EmployeeFormValidator.class.equals(clazz);
}
@Override
public void validate(Object obj, Errors e)
{
EmployeeFormValidator form = (EmployeeFormValidator) obj;
e.reject("firstName", "Please populate the employee's first name field.");
}
}
@ControllerAdvice
public class ExceptionControllerAdvice {
@ExceptionHandler(MethodArgumentNotValidException.class)
public @ResponseBody String handleException(MethodArgumentNotValidException ex, HttpServletRequest request) {
if(ex.getBindingResult() != null) {
BindingResult bindingResult = ex.getBindingResult();
return "Binding errors found.";
}else {
return "No binding errors found.";
}
}