IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring MVC 参数检验 (Validated & Valid) -> 正文阅读

[Java知识库]Spring MVC 参数检验 (Validated & Valid)

一、Validated和Valid区别

在Spring Mvc中可以使用@Validated和@Valid两个注解来校验Controller 方法参数。

其中@Valid是标准JSR-303规范的标记型注解,用来标记验证属性和方法返回值,进行级联和递归校验。

而@Validated是Spring提供的注解,是标准JSR-303的一个变种(补充),提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。

且两者作用的范围也有些许不一样;
Valid可以用在:方法,字段、枚举的常量,构造函数,方法参数;
Validated可以用在:接口、类、枚举、注解,方法,方法参数。

二、Controller参数校验

在springboot中,基本上使用@Valid和@Validated都可以进行校验,但是在springboot项目,还是推建使用@Validated注解。
在请求接口的场景中,也分为使用@RequestParam、@PathVariable 指定请求参数,例如

@GetMapping("/test")
public String get(@RequestParam(value = "gsbId", required = false) String gsbId){
	// ... do some thing
}

也有通过在形参中指定某个类型场景,例如:


@Data
public class Pojo{
	private String a;
}

// pojo中的a = request.getParameter("a"),相当于@RequestParma("a")
@GetMapping("/get")
public String get(Pojo pojo){
	// ... do some thing
}

@PostMapping("/post")
public Sting post(@RequestBody Pojo pojo){
	// ... to some ting
}

这两种场景在使用@Validated时会有些不一样。

1、@RequestParam、@PathVariable 指定请求参数

代码示例:

@Validated
@RestController
public class Controller{
	@GetMapping("/test")
	public String get(@Min(value=10, message="num must greater than 10") @RequestParam("num") Integer num){
		// ... do some thing
	}
}

注意:

  • @Validated注解标注在类上,标注在方法或者参数上则无效
  • 方法参数中不能有bingResult、errors,bingdingResult、errors

2、在形参中指定POJO类

代码示例:

@RestController
public class Controller{
	@GetMapping("/get")
	public String get(@Validated Pojo pojo){
		// ... do some thing
	}
	
	@GetMapping("/post")
	public String post(@Validated @RequestBody Pojo pojo){
		// ... do some thing
	}
}


public class Pojo{
	@Min(value=10, message="num must greater than 10")
	private Integer num;
}

注意:

  • 在这种使用场景下,@Validated注解只有标注在方法参数上才会生效
  • 方法参数中不能有bingResult、errors,bingdingResult、errors

最后关于JAVA字段校验(validation)更多的资料可以点击链接查看

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:33:33  更:2022-05-01 15:36:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:04:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码