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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。