spring validated用法,spring @valid

  spring validated用法,spring @valid

  00-1010基本概念@Valid和@Validated注释的主要区别是什么?什么是嵌套验证?摘要

  

目录

Spring验证框架为参数验证机制提供了@Validated(Spring的JSR-303规范,是标准JSR-303的变种),javax提供了@Valid(标准JSR-303规范),可以直接用BindingResult提供参数验证结果。其中字段的特定验证注释,如@NotNull。

 

  00-1010在Spring中,我们使用JSR-303的@Valid注释进行方法级验证。此外,我们还使用它来标记成员属性以进行验证。但是,该注释不支持组验证。

  验证有助于限制验证期间应用的约束。UI是一个特殊的用例。这里,在第一步中,我们可能有一个特定的字段子组。在随后的步骤中,可能有另一个组属于同一个bean。所以我们需要在每一步对这些有限的字段施加约束,但是@Valid不支持这种约束。

  在这种情况下,对于组级别,我们必须使用Spring的@Validated,它是这个JSR-303的@Valid的变体。在方法级别使用。为了标记成员属性,我们继续使用@Valid注释。

  00-1010在验证控制器参数是否符合规范时,使用@Validated或@Valid基本验证功能没有太大区别。但是在分组、注释放置、嵌套验证等功能上有两个区别:

  @Validated@Valid grouping提供分组功能,参数校验时可以根据不同的分组采用不同的校验机制。没有分组功能来注释位置。

  可用于类型、方法和方法参数。但不能用在成员属性中,可以用在方法、构造函数、方法参数和成员属性中(能否用在成员属性中直接影响能否提供嵌套验证)。不能仅在方法参数中提供嵌套验证。

  不能用于成员属性。

  也不能为嵌套验证提供框架。

  它可以与嵌套验证注释@Valid协作进行嵌套验证。

  不能在方法参数上单独提供嵌套验证。

  它可以用于成员属性,以提示验证框架进行嵌套验证。

  它可以与嵌套验证注释@Valid协作进行嵌套验证。

  00-1010 public class item { @ not null(message= ID不能为空)@Min(value=1,message= ID必须是正整数)private Long id@NotNull(message=props不能为空)@Size(min=1,message=必须至少有一个属性)private ListProp props}Item有很多属性,包括属性id、属性值id、道具属性名、属性值,如下图:

  public Prop { @ not null(message= PID不能为空)@Min(value=1,message= PID必须是正整数)private Long pid@NotNull(message=vid不能为空)@Min(value=1,message=vid必须是正整数)private Long vid@NotBlank(message=pidName不能为空)私有字符串PID name;@NotBlank(message=vidName不能为空)私有字符串vid name;}道具属性也有自己的验证机制。例如,属性值不能为空。

  现在,test,接收Item的输入,并想要验证该项目,如下所示:

  @ RestControllerpublic class Item controller { @ request mapping(/Item/add )public void addItem(@ Validated Item Item,binding result binding result){ do something();}}上图中,如果Item实体的props属性没有标注,只有NotNull和@Size,那么不管参数是用@Validated还是@Valid验证,Spring验证框架都只会验证Item的id和props在非Null和quantity,不会验证Props字段中的prop实体,也就是说,只有在方法参数前加上@Validated和@Valid,参数才会嵌套。

  为了能够进行嵌套验证,必须手动明确质押项目实体的props字段,并且还必须验证该字段中的实体。由于@Validated不能在成员属性中使用,但是@Valid被添加到成员属性中,并且@Valid类的注释也表明支持嵌套验证,那么我们可以推断出@Valid在添加到方法参数中时不能自动用于嵌套验证,但是可以在需要嵌套验证的类的对应字段中使用,以在方法参数上匹配@Validated或@Valid进行嵌套验证。

  修改后的项目类别:

  public class Item { @ not null(message= ID不能为空)@Min(value=1,message= ID必须为正整数)private Long id@Valid //嵌套验证必须使用@Valid @NotNull(message=props不能为空)@Size(min=1,message=props必须至少有一个自定义属性)私有ListProp props}

  00-1010关于Spring中@Validated和@Valid的区别的这篇文章到此为止。更多关于Spring中@Validated和@ valid的区别,请搜索Popular IT之前的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: