`
caicai1230231
  • 浏览: 22962 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

统一处理springmvc的Valid验证

阅读更多

对于后端的参数校验,我们一直在强调的验证规则,提示信息的重用。这不,springmvc通过集成Valid最大程序减少了我们的工作量。其实后端的参数过滤,是分几种请求来源的。每种的处理都不太一样,但是我们如果能重用验证规则,提示信息,那就很强大了。
1 常用的表单提交,需要页面返回错误信息
2 AJAX提交,需要JSON格式返回,或者XML
3 接口调用,同样需要对应的数据格式返回
对于这3类请求,我今天讲的是第3种,是可以重用第1种的资源和验证规则。它就是ControllerAdvice(控制建议)

 1 /**
 2  * Indicates the annotated class assists a "Controller".
 3  *
 4  * <p>Serves as a specialization of {@link Component @Component}, allowing for
 5  * implementation classes to be autodetected through classpath scanning.
 6  *
 7  * <p>It is typically used to define {@link ExceptionHandler @ExceptionHandler},
 8  * {@link InitBinder @InitBinder}, and {@link ModelAttribute @ModelAttribute}
 9  * methods that apply to all {@link RequestMapping @RequestMapping} methods.
10  *
11  * @author Rossen Stoyanchev
12  * @since 3.2
13  */

中文的大概意思就是:
A 定义异常处理
B 初始化binder,比如一些类型转换,自定义验证等等
C 设置ModelAttribute的值
看到没有,异常处理。刚好spring有提供 
MethodArgumentNotValidException这个异常,而这个异常就是处理参数验证不通过会抛出的。
哈哈哈,太好了。这样,我就可以在这里面,去封装Valid的异常 
如图 
里面的processValidationError方法会处理具体异常的返回值并以JSON输出,大功告成,下周再贴出整体代码链接。
当这样处理之后,我们的resetful的接口只用处理真正的业务,完全不用做常用的参数检查。

4
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics