Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC:表单验证的集中处理_Java_Spring_Validation_Model View Controller - Fatal编程技术网

Java SpringMVC:表单验证的集中处理

Java SpringMVC:表单验证的集中处理,java,spring,validation,model-view-controller,Java,Spring,Validation,Model View Controller,我有一个应用程序,它有许多数据输入屏幕,因此有许多控制器类接受各种形式的POST数据。表单使用javax验证注释,控制器使用BindingResult检查错误。一些表单使用自定义验证器(实现Springs ValidationUtils)进行更多验证 我现在正尝试使用@ControllerAdvice方法将表单验证(删除每个控制器中重复的验证代码)集中到一个单独的类中,并从控制器方法的参数中删除BindingResult。删除绑定结果会引发ControllerAdvice类捕获的错误 除了在Co

我有一个应用程序,它有许多数据输入屏幕,因此有许多控制器类接受各种形式的POST数据。表单使用javax验证注释,控制器使用BindingResult检查错误。一些表单使用自定义验证器(实现Springs ValidationUtils)进行更多验证

我现在正尝试使用@ControllerAdvice方法将表单验证(删除每个控制器中重复的验证代码)集中到一个单独的类中,并从控制器方法的参数中删除BindingResult。删除绑定结果会引发ControllerAdvice类捕获的错误

除了在ControllerAdvice类的BindingResult中只存在诸如@Max、@Min之类的基本注释,而不存在来自自定义验证器的更复杂的验证之外,这一切都可以很好地工作

有没有办法将自定义验证错误放入ControllerAdvice类?您还采取了哪些其他方法来集中处理表单验证

谢谢

代码如下:

EmployeeController.java

EmployeeFormValidator.java

ExceptionControllerAdvice.java除外


如果您使用的是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.";
        }

    }