SpringMvc @Valid如何抛出拦截异常
SpringMvc中,校验参数可以使用@Valid注解,同时在相应的对象里使用
@NotBlank(message="昵称不能为空") @NotNull(message="ID不能为空") @Pattern( message="不能包括空格" ,regexp="\\S+" )
等等。
这个校验会把所有的参数都校验一遍,所以它的异常里会好些列表,直接使用e.getMessage(),会输出很多累赘的东西
一个好的解决办法
@Valid注解校验住的异常是org.springframework.validation.BindException
所以可以添加一个异常拦截器,专门拦截,并且解析这种异常
具体如下:
packagecn.jiashubing.config;
importcn.jiashubing.result.ResultModel;
importorg.springframework.validation.BindException;
importorg.springframework.validation.ObjectError;
importorg.springframework.web.bind.annotation.ControllerAdvice;
importorg.springframework.web.bind.annotation.ExceptionHandler;
importorg.springframework.web.bind.annotation.ResponseBody;
importjava.util.List;
/**
*@authorjiashubing
*@since2019/6/17
*/
@ControllerAdvice
publicclassBingExceptionHandler{
@ExceptionHandler(BindException.class)
@ResponseBody
publicResultModelhandleBindException(Exceptione){
//打印校验住的所有的错误信息
StringBuildersb=newStringBuilder("参数错误:[");
Listlist=((BindException)e).getAllErrors();
for(ObjectErroritem:list){
sb.append(item.getDefaultMessage()).append(',');
}
sb.deleteCharAt(sb.length()-1);
sb.append(']');
Stringmsg=sb.toString();
returnnewResultModel(false,msg);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。