相关博客:SSM整合hibernate-validator
第一步:自定义异常public class WeGoArgumentException extends RuntimeException{
/**
* map封装了错误的信息
*/
@Getter
private Map map;
public WeGoArgumentException(Map map) {
this.map = map;
}
}
第二步:自定义异常处理器
@Component
@ControllerAdvice
public class WeGoArgumentExceptionHandler {
@ResponseBody
@ExceptionHandler(WeGoArgumentException.class)
public Map process(WeGoArgumentException ex){
Map map = ex.getMap();
return map;
}
}
第三步:使用
@Controller
@RequestMapping("/province")
public class ProvinceController {
@PostMapping("/add")
public String add(@Valid Province province, BindingResult result) {
if(result.hasErrors()){
//如果没有通过,跳转提示
Map map = getErrors(result);
throw new WeGoArgumentException(map);
}else {
provinceService.add(province);
//重定向到列表页面
return "redirect:/province/list";
}
}
private Map getErrors(BindingResult result) {
Map map = new HashMap();
List list = result.getFieldErrors();
for (FieldError error : list) {
map.put(error.getField(), error.getDefaultMessage());
}
return map;
}
}