[email protected]

云惠网小编 2021年7月29日21:19:11
评论
1693字阅读5分38秒
摘要

@Valid 注解通常用于对象属性字段的规则检测。以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解。那么,首先,我们会有一个员工对象 Employee,如下 :public class Employee { /** 姓名 */ public String name; /** 年龄 */ public Integer age; public String getName() { return name

广告也精彩

以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解。

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
public class Employee {
/** 姓名 */
@NotBlank(message = "请输入名称")
@Length(message = "名称不能超过个 {max} 字符", max = 10)
public String name;
/** 年龄 */
@NotNull(message = "请输入年龄")
@Range(message = "年龄范围为 {min} 到 {max} 之间", min = 1, max = 100)
public Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
public class Employee {
/** 姓名 */
public String name;
/** 年龄 */
public Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.5.RELEASE</version>
</dependency>

然后再 Controller 对应方法上,对这个员工标上 @Valid 注解,表示我们对这个对象属性需要进行验证
参数校验Spring的@Valid注解用法详解
用一个东西来存放验证结果,做法也很简单,在参数直接添加一个BindingResult:
参数校验Spring的@Valid注解用法详解
对应获取验证结果的代码如下:

此时引出 Spring 的 @valid 注解即可:

代码优化。
首先在 Employee 类的属性上打上如下注解:

首先,我们在 Maven 配置中引入 @valid 的依赖:

然后 Cotroller 中会有一个对应都新增方法 add():

如果你是 springboot 项目,那么可以不用引入了,已经引入了,他就存在于最核心的 web 开发包里面。

需求变更,要求员工名称不能为空,且长度不超过10个字符,我们的原始写法:
参数校验Spring的@Valid注解用法详解
现在规定年龄也是必填项,且范围在1到100岁,那么此时,我们需要增加判定
参数校验Spring的@Valid注解用法详解
现在员工对象 Employee 就 2 个字段,我们就写了 10 多行的代码验证,要是有20个字段,岂不是要写 100 多行代码?
如何解决呢?
将验证过程抽成一个验证方法:
参数校验Spring的@Valid注解用法详解
但这种方式只是抽了一个方法,有一种换汤不换药的感觉,虽然业务方法看起来清爽了很多,但书写代码量并没有下降,反而还多出了一个方法。

那么,首先,我们会有一个员工对象 Employee,如下 :

@Controller
public class TestController {
@RequestMapping("/add")
@ResponseBody
public String add(Employee employee) {
// TODO 保存到数据库
return "新增员工成功";
}
}

@Valid 注解通常用于对象属性字段的规则检测。

本文转自 https://blog.csdn.net/qq_33589510/article/details/119030508

腾讯云618
云惠网小编
Java—代码块详解 java

Java—代码块详解

代码块概念代码块分类普通代码块构造代码块静态代码块同步代码块代码块概念在java中,{ } 括起来的代码被称为代码块代码块分类普通代码块类中方法的方法体public class M...
腾讯云618

发表评论