Spring框架的@Valid注解

  上一篇文章介绍了springmvc的get请求参数可以是一个自定的对象。那么如何限制这个对象里的参数是否必传呢?

  方法一:在代码逻辑里取出对象里的这个值,手动进行判断
  方法二:使用@Valid注解,在接口请求的时候让Spring自己进行判断

比较

  如果用上面两个方法进行非空判断,当参数传的是空的时候,

  方法一的返回结果的状态是 200,方法二的返回结果状态是 400;
  方法一需要自定义返回结果并且可以直接在页面中进行展示,方法二的返回结果需要从Response Body中获取。
  方法一复杂,方法二简单。

  所以这两种方法的适用场景是不同的,如果要在页面输出,应该使用方法一,如果只是接口之间调用,那么使用方法二就可以了

如何使用@Valid注解

比如请求:
  public String login(@Valid User user) {...}

User.java 如下:

 1 import org.hibernate.validator.constraints.Length;
 2 import javax.validation.constraints.NotBlank;
 3
 4 /**
 5  * @author jiashubing
 6  * @since 2019/1/9
 7  */
 8 public class User {
 9     @NotBlank(
10             message = "姓名不能为空"
11     )
12     @Length(
13             message = "姓名最长为20个字符"
14             , min = 1
15             , max = 20
16     )
17     private String name;
18
19     @NotBlank(
20             message = "密码不能为空"
21     )
22     @Length(
23             message = "密码最少为8个字符,最长为30个字符"
24             , min = 8
25             , max = 30
26     )
27     private String password;
28
29     public String getName() {
30         return name;
31     }
32
33     public void setName(String name) {
34         this.name = name;
35     }
36
37     public String getPassword() {
38         return password;
39     }
40
41     public void setPassword(String password) {
42         this.password = password;
43     }
44
45 }

以下转自:http://blog.51cto.com/825272560/2121519

  @Valid注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能。

@Valid 注解类型

@Null
限制只能为null

@NotNull
限制必须不为null

@AssertFalse
限制必须为false

@AssertTrue
限制必须为true

@DecimalMax(value)
限制必须为一个不大于指定值的数字

@DecimalMin(value)
限制必须为一个不小于指定值的数字

@Digits(integer,fraction)
限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future
限制必须是一个将来的日期

@Max(value)
限制必须为一个不大于指定值的数字

@Min(value)
限制必须为一个不小于指定值的数字

@Past
限制必须是一个过去的日期

@Pattern(value)
限制必须符合指定的正则表达式

@Size(max,min)
限制字符长度必须在min到max之间

@Past
验证注解的元素值(日期类型)比当前时间早

@NotEmpty
验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@NotBlank
验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Email
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

注意,不要错用了异常类型,比如在int上不可用@size

原创文章,欢迎转载,转载请注明出处!

原文地址:https://www.cnblogs.com/acm-bingzi/p/spring_valid.html

时间: 2024-10-08 10:03:01

Spring框架的@Valid注解的相关文章

Spring框架 之@Valid注解的使用(嵌套类型的效验)

@Valid注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能. @Valid 注解类型的使用: @Null限制只能为null @NotNull限制必须不为null @AssertFalse限制必须为false @AssertTrue限制必须为true @DecimalMax(value)限制必须为一个不大于指定值的数字 @DecimalMin(value)限制必须为一个不小于指定值的数字 @Digi

Spring框架中利用注解进行自动装配的环境配置步骤和常见问题

第1步:配置XML文件 ,如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spring

Spring框架总结(四)——注解

前面几节,通过配置xml文件,可以实现Spring 控制反转的依赖注入.不过,如果一个类中,存在很多属性.依赖不止一个目标,此时这种基于xml配置的方式就显得非常繁琐.幸好,Spirng提供了几种技巧,可以帮助我们减少xml的配置数量 自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让spring自动识别如何装配Bean的依赖关系 自动检测(autodiscovery)比自动装配更进了一步,让Spring能够自

详解Java的Spring框架中的注解的用法

转载:http://www.jb51.net/article/75460.htm 1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } 配置文件: <bean id=&qu

SAP BOPF和Spring框架里加了注解的控制器是如何被调用的

BOPF的这些determination,其方法不需要application developer自己去调用,而是被BOPF框架通过调用interface method的方式被调用. Spring MVC的@RequestMapping工作原理类似,但实现方式稍稍高级点,用的是Java的反射. ProductPageController这个类的productDetail方法加上了@RequestMapping, 参数是: 当我点了product list上某个product的image想进入det

Spring框架context的注解管理方法之二 使用注解注入对象属性

首先还是xml的配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springfram

spring框架校验自定义注解

起因: 项目开发时遇到一个问题是对于金额类型的字段,数据库中格式一般为BigDecimal类型,两位小数点,然后在接口定义中如果不定义成String类型的话,就不能使用@pattern注解限定格式,而在hibernate的校验里面,没有相关适合的注解使用来限定金额格式,所以需要自定义一个注解来对这类参数进行校验.如果在接口中传入的参数值小数点后不止两位,在mysql中进行插入的时候会自动进行剪切,如传入1.315元,在入库的时候该参数就可能被剪切成1.35元,最终入库数据为1.35. 解决:自定

解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题

目的: 想改用spring框架强大的注解功能(@Repository注解)来实现自动注册dao的bean的功能(原来是在xml中配置的).改完之后,运行的时候直接报错: Error creating bean with name 'UserVODao' defined in file [D:\JSP_MyEclipse\.metadata\.me_tcat7\webapps\XYG_WEBDEV_SAMPLE\WEB-INF\classes\com\xinyiglass\springSample

JavaEE开发之Spring中的条件注解、组合注解与元注解

上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条件来选择Bean对象的创建.条件注解就是可以根据不同的条件来做出不同的事情.在Spring中条件注解可以说是设计模式中状态模式的一种体现方式,同时也是面向对象编程中多态的应用部分.而组合注解就是将现有的注解进行组合.下方会给出具体的介绍和实例. 一.条件注解[email protected] 本篇博客的本部分