我已经定义了一个控制器类,该类使用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;
}
答案 0 :(得分:0)
您需要创建一个自定义BindingErrorsException来扩展Runtime Exception并将您的逻辑放在这里。
然后,您必须具有一个@ControllerAdvice类,该类具有不同的@ExceptionHandler。
您也可以查看此答案-Why Spring MVC does not allow to expose Model or BindingResult to an @ExceptionHandler?