统一处理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的接口只用处理真正的业务,完全不用做常用的参数检查。

猜你喜欢

转载自zuxiong.iteye.com/blog/2259819