SpringMvc @Valid如何抛出拦截异常
更新时间:2020年09月17日 10:06:47 作者:贾树丙
这篇文章主要介绍了SpringMvc @Valid如何抛出拦截异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
SpringMvc中,校验参数可以使用 @Valid 注解,同时在相应的对象里使用
@NotBlank( message = "昵称不能为空") @NotNull( message = "ID不能为空") @Pattern( message = "不能包括空格" , regexp = "\\S+" )
等等。
这个校验会把所有的参数都校验一遍,所以它的异常里会好些列表,直接使用e.getMessage(),会输出很多累赘的东西
一个好的解决办法
@Valid 注解校验住的异常是 org.springframework.validation.BindException
所以可以添加一个异常拦截器,专门拦截,并且解析这种异常
具体如下:
package cn.jiashubing.config; import cn.jiashubing.result.ResultModel; import org.springframework.validation.BindException; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; /** * @author jiashubing * @since 2019/6/17 */ @ControllerAdvice public class BingExceptionHandler { @ExceptionHandler(BindException.class) @ResponseBody public ResultModel handleBindException(Exception e) { //打印校验住的所有的错误信息 StringBuilder sb = new StringBuilder("参数错误:["); List<ObjectError> list = ((BindException) e).getAllErrors(); for (ObjectError item : list) { sb.append(item.getDefaultMessage()).append(','); } sb.deleteCharAt(sb.length() - 1); sb.append(']'); String msg = sb.toString(); return new ResultModel(false, msg); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
java.lang.OutOfMemoryError 错误整理及解决办法
这篇文章主要介绍了java.lang.OutOfMemoryError 错误整理及解决办法的相关资料,需要的朋友可以参考下2016-10-10详解使用Spring的BeanPostProcessor优雅的实现工厂模式
这篇文章主要介绍了详解使用Spring的BeanPostProcessor优雅的实现工厂模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07SpringBoot+Vue.js实现前后端分离的文件上传功能
这篇文章主要介绍了SpringBoot+Vue.js实现前后端分离的文件上传功能,需要的朋友可以参考下2018-06-06IntelliJ idea 如何生成动态的JSON字符串(步骤详解)
这篇文章主要介绍了IntelliJ idea 如何生成动态的JSON字符串,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08
最新评论