详解SpringMVC验证框架验证特殊用法

  

基本用法不说了,网上例子很多,这里主要介绍下比较特殊情况下使用的方法。
  

  

<强> 1。分组
  

  

有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的id来说,保存的时候是不需要的,对于更新时是必须的,可以如下配置:
  

        公开课UserModel {      @NotNull(消息=" {id。空}”、组={第一。类})   私人int id;      @NotNull(消息="{用户名。空}”、组={第一。类,第二个。类})   私人字符串的用户名;      @NotNull(消息="{内容。空}”、组={第一。类,第二个。类})   私人字符串内容;      公共int getId () {   返回id;   }      公共空间setId (int id) {   这一点。id=id;   }      公共字符串getUsername () {   返回用户名;   }      公共空间setUsername(字符串的用户名){   这一点。用户名=用户名;   }      公共字符串getContent () {   返回内容;   }      公共空间setContent(字符串内容){   这一点。内容=内容;   }   }   公共接口第{   }      第二个{公共接口   }   之前      

通过团体对验证进行分组
  

  

在控制器中的代码如下:

        @RequestMapping (value=" https://www.yisu.com/save.action ",方法=RequestMethod.POST)   公共字符串保存(@Validated({第二。类})UserModel UserModel BindingResult结果){   如果(result.hasErrors ()) {   返回“验证/错误”;   }   返回“重定向:/成功”;   }      @RequestMapping (value=" https://www.yisu.com/update.action ",方法=RequestMethod.POST)   公共更新(@Validated({第一个字符串。类,第二个。类})UserModel用户,BindingResult结果){   如果(result.hasErrors ()) {   返回“验证/错误”;   }   返回“重定向:/成功”;   }   之前      

<强> 2。组序列
  

  

默认情况下,不同组别的约束验证是无序的,然而在某些情况下,约束验证的顺序却很重要,如下面两个例子:(1)第二个组中的约束验证依赖于一个稳定状态来运行,而这个稳定状态是由第一个组来进行验证的。(2)某个组的验证比较耗时,CPU和内存的使用率相对比较大,最优的选择是将其放在最后进行验证,因此,在进行组验证的时候尚需提供一种有序的验证方式,这就提出了组序列的概念。
  

  

一个组可以定义为其他组的序列,使用它进行验证的时候必须符合该序列规定的顺序。在使用组序列验证的时候,如果序列前边的组验证失败,则后面的组将不再给予验证。
  

  

下例中声明了组GroupA.class, GroupB。类和组。类,其中违约,GroupA GroupB均为集团的序列。
  

        公共接口GroupA {   }      公共接口GroupB {   }      @GroupSequence({违约。类,GroupA。类,GroupB。类})   公共接口组{   }      公开课用户{   @NotEmpty(消息=" firstname可能是空的”)   私人字符串firstname;      @NotEmpty(消息=癿iddlename可能是空的”,组=Default.class)   私人字符串middlename;      @NotEmpty(消息=發astname可能是空的”,组=GroupA.class)   私人字符串姓;      @NotEmpty(消息=肮铱赡苁强盏摹?组=GroupB.class)   私人的字符串;   }   (java)视图在普通副本代码上查看代码片派生到我的代码片   @RequestMapping (value=" https://www.yisu.com/update.action ",方法=RequestMethod.POST)   公共字符串寄存器(@Validated (Group.class)用户用户,BindingResult结果){   如果(result.hasErrors ()) {   返回“验证/错误”;   }   返回“重定向:/成功”;   }   之前      

<强> 3。验证多个对象
  

  

当我们在一个功能处理方法上需要验证多个模型对象时,需要通过如下形式来获取验证结果:
  

        @RequestMapping(“/验证/多”)   公共字符串多(@Valid @ModelAttribute (“a”), BindingResult aErrors, @Valid @ModelAttribute (b) b b, BindingResult bErrors) {      如果(aErrors.hasErrors()){//如果一模型对象验证失败   返回“验证/错误”;   }   如果(bErrors.hasErrors()){//如果一模型对象验证失败   返回“验证/错误”;   }   返回“重定向:/成功”;   }   

详解SpringMVC验证框架验证特殊用法