处理绑定结果注释后如何使用Exceptionhandler批注

时间:2018-08-01 18:18:32

标签: spring hibernate rest spring-mvc spring-boot

我已经定义了一个控制器类,该类使用jsr批注(@valid)进行验证,并通过bindingresult对象即时处理其异常,但我希望将其提升到一个新的水平,并将该控制器类配置为处理矛盾冲突异常,如何为此配置相同的控制器

@RequestMapping(value="/saveOrUpdatelawyers", method=RequestMethod.POST)
public @ResponseBody  Map<String,Object> getSaved(@Valid Lawyers lawyers,BindingResult result){
    Map<String,Object> map = new HashMap<String,Object>();

    Object obj=new Object();
        if(result.hasErrors())
        {  
            for (Object object : result.getAllErrors()) {
                if(object instanceof FieldError) {
                    FieldError fieldError = (FieldError) object;

                 obj= (fieldError.getDefaultMessage());
                }
            map.put("status","400");
            map.put("message",obj);
            return map;
        }}

        lawyerServices.saveOrUpdatelawyers(lawyers);
        map.put("status","200");
        map.put("message","Your record have been saved successfully");
        return map;

}

1 个答案:

答案 0 :(得分:0)

您需要创建一个自定义BindingErrorsException来扩展Runtime Exception并将您的逻辑放在这里。

然后,您必须具有一个@ControllerAdvice类,该类具有不同的@ExceptionHandler。

我有一个示例项目可能会帮助您入门:https://github.com/dhananjay12/learning-spring-rest/blob/master/error-handling/src/main/java/com/djcodes/spring/rest/errorhandling/EmployeeController.java

您也可以查看此答案-Why Spring MVC does not allow to expose Model or BindingResult to an @ExceptionHandler?