10:@Validated和@Valid-Java Spring

2023-05-16

目录

  • 10.1 @Valid
  • 10.2 @Validated
  • 10.2 区别
  • 10.2 Controller参数校验

10.1 @Valid

@Valid 是 Hibernate validation 提供的注解,表示开启Hibernate validation 的校验机制,所属包为javax.validation.Valid

作为标准JSR-303规范,用来标记验证属性和方法返回值,进行级联和递归校验,没有分组功能

@Valid注解对数据模型实现验证,可在方法参数中自动注入BindingResult对象,用于接收校验结果,如果有不合法的参数,从中取出结果信息并返回给前端页面

10.2 @Validated

@Validated是Spring Validator提供的注解,表示开启Spring的校验机制

作为标准JSR-303的补充,提供了groups属性分组功能,可根据不同的分组采用不同的校验机制

@Validation是对@Valid的二次封装,在使用上没有区别,但两者功能不一样

10.2 区别

注解位置

  • @Valid 可用于方法、字段、枚举、构造器、方法参数上
  • @Validated 可用于接口、类、枚举、注解、方法、方法参数上

分组校验

  • @Valid 没有分组功能
  • @Validated 提供分组功能

方法级别

  • @Valid 可用在属性级别约束,表示级联校验。
  • @Validated 可用于类级别约束,表示Spring进行方法级别的参数校验

嵌套验证

  • @Valid 作用于成员属性上,嵌套验证功能
  • @Validated 不能作用于成员属性上,无嵌套验证功能,需配合@Valid注解进行嵌套验证

10.2 Controller参数校验

在Spring Mvc中可以使用@Validated和@Valid两个注解来校验Controller方法参数,校验的顺序是随机的,程序不能依赖校验的顺序去做相关的逻辑处理

@Valid注解表示开启Hibernate的校验机制,@Validated注解表示开启Spring的校验机制。

@RestController
public class Controller {
    @RequestMapping("/test")
    public User test(@Validated User user, BindingResult result) {
        if (result.hasErrors()) {
            List<ObjectError> errors = result.getAllErrors();
            for (ObjectError error : errors) {
                System.out.println(error.getDefaultMessage());
            }
        }
        return user;
    }
}

Controller层的方法的要校验的参数上添加@Validated/@Valid注解注解,并且需要传入BindingResult对象,当参数不符时,该对象用于获取校验失败情况下的反馈信息

如果没有BindingResult对象,当参数不符时,将返回400 Bad Request状态码

校验注解

注解说明
@NotNull/@Null验证注解的元素值不是/是null
@AssertFalse/@AssertTrue验证注解的元素值是false/true
@Max(value)/@Min(value)验证注解的元素大于/小于值(value)
@Past/@Future验证注解的元素比当前日期早/晚
@Email验证注解的元素必须是Email
@NotEmpty验证注解的元素值不为null,但长度不能为0
@NotBlank验证注解的元素值不为null,但去除字符串的空格后长度不能为0,只应用于字符串
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10:@Validated和@Valid-Java Spring 的相关文章

  • 如何重复一段文本中的每个字母?爪哇语

    就像在口吃中一样 如果文本为 dean 并且乘数为 3 则结果将是 dddeeeaaannn 由提供的乘数指定的次数 public static void repeatLetters String text dean int n 3 Str
  • 二元运算符 >=、-、* 的错误操作数类型

    我无法弄清楚如何修复代码中不断出现的这些错误 import java util Scanner public class Unit02Prog1 public static void main String args Scanner inp
  • 无法在 Intellij 中运行主类[重复]

    这个问题在这里已经有答案了 我有以下项目结构 ProjectRoot src Main examples libs My src文件夹被标记为sources在 Intellij 中 现在 当我想运行 Main 类时 出现以下错误 Excep
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 清空变量不会使方法引用无效[重复]

    这个问题在这里已经有答案了 为什么代码不抛出NullPointerException当我使用与变量绑定的方法引用时dog我后来分配了null to 我正在使用 Java 8 import java util function Functio
  • 使用 https 的 Web 服务身份验证给出错误

    我编写了一个简单的 Web 服务 并使用摘要和 HTTPS 身份验证来保护它 我已经使用 Java 中的 keytool 生成了我的证书 当我通过创建 war 文件在 Tomcat 中部署 Web 服务时 axis 的欢迎页面正确显示 但是
  • 在 doxygen 中使用 @see 或 @link

    我之前用 Javadoc 记录并使用了标签 see link or see foo and link foo 在我的描述中链接到其他课程 现在我尝试了doxygen 似乎这些标签不兼容 如果我运行 doxygen 完整的标签将被简单地解释为
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • 始终将双精度舍入

    我怎么总是能把一个double to an int 并且永远不要将其四舍五入 我知道Math round double 但我希望它始终向上舍入 所以如果是的话3 2 四舍五入为 4 您可以使用Math ceil method 请参阅Java
  • 如何在 JmsMessagingTemplate.sendAndReceive 上设置等待超时

    我在 MVC 控制器中使用 JmsMessagingTemplate 的 sendAndReceive 但如果没有发送回复消息 它似乎会永远等待回复 该文档指出 返回 回复 如果无法接收消息 例如由于超时 则可能为 null 然而 我只是不
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • Spring security:从 4.0 迁移到 5.0 - 错误 - 没有为 id“null” 映射的 PasswordEncoder [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 java lang IllegalArgumentException There is no PasswordEncoder ma
  • Hybris:如何在impex中导入zip文件中的媒体?

    我知道我们可以导入未像这样压缩的图像 siteResource jar com project initialdata constants ProjectInitialDataConstants projectinitialdata imp
  • 添加 char 和 int

    据我了解 字符是一个字符 即一个字母 一个digit 标点符号 制表符 空格或类似的东西 因此 当我这样做时 char c 1 System out println c 输出 1 正是我所期望的 那么为什么当我这样做时 int a 1 ch
  • 如何使用 AffineTransform.quadrantRotate 旋转位图?

    我想旋转一个bitmap关于它的中心点 然后将其绘制成更大的图形上下文 位图是40x40 pixels 图形上下文是500x500 pixels 这就是我正在做的 BufferedImage bi new BufferedImage 500
  • log4j.properties 在 Wildfly 上无法正常工作

    我的类路径中有一个 log4j properties 文件 它位于 APP XX jar log4j properties 位置 我注意到在ear文件中我还可以在lib文件夹中找到log4j 1 2 17 jar 但无论我在 log4j p
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • 如果 Modelmapper 中的整个属性为空,如何排除它们

    ModelMapper 是否 http modelmapper org http modelmapper org 支持什么排除属性 如果该值为空 我刚刚找到了 PropertyMap 但这对我来说是一种限制 因为我必须描述我想要的特定属性
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐

  • Windows Update MiniTool 20.12.2016 控制Window更新下载及使用教程

    目录 一 下载教程1 wumt官网下载2 网盘下载 二 Windows更新配置1 检查更新2 下载或安装更新3 隐藏更新4 卸载更新5 禁用自动更新 Windows Update MiniTool 是由俄罗斯人编写的第三方Windows更新
  • 1:Web开发入门-Java Web

    目录 1 1 什么是Web应用程序1 2 B S架构1 3 静态Web与动态Web1 4 Java EE介绍1 5 Java EE架构与组件1 6 Java EE中的容器1 7 XML介绍1 8 XML与HTML的区别1 9 XML的实现
  • 华为开源自研AI框架昇思MindSpore CPU-Ubuntu版本 Pip自动安装教程

    目录 一 介绍二 获取命令1 进入MindSpore官网2 选择安装版本3 获取命令 三 自动安装1 确保为Ubuntu系统2 下载自动安装脚本3 执行自动安装脚本4 验证安装 本教程是在CPU Ubuntu上安装MindSpore1 8
  • 2:开发环境搭建-Java Web

    目录 2 1 Web服务器的作用2 2 Tomcat简介2 3 Tomcat服务器安装与使用2 4 Tomcat目录结构2 5 Tomcat配置文件2 6 修改Tomcat默认端口 2 1 Web服务器的作用 Web服务器也称为WWW WO
  • 3:Tomcat部署Web项目-Java Web

    目录 3 1 Web 应用程序3 2 部署Web项目3 3 配置虚拟目录3 4 配置Web项目的首页 3 1 Web 应用程序 一个 web 应用程序是由一组 Servlet xff0c HTML 页面 xff0c 类 xff0c 以及其它
  • 1:Spring框架核心-Java Spring

    CSDN话题挑战赛第2期 参赛话题 xff1a 学习笔记 目录 1 1 软件模块化1 2 Spring框架介绍1 3 Spring框架的配置1 4 Servlet1 5 Spring容器1 6 Spring Bean对象的注解1 7 控制反
  • 2:Maven-Java Spring

    目录 2 1 Maven介绍2 2 标准目录结构2 3 POM2 4 Maven生命周期2 5 Maven插件 2 1 Maven介绍 Maven是Apache 下的一个纯 Java 开发的开源项目 基于项目对象模型 xff08 缩写 xf
  • 3:SpringBoot-Java Spring

    目录 3 1 SpringBoot介绍3 2 Spring和SpringBoot的区别3 3 系统要求3 4 SpringBootApplication 3 1 SpringBoot介绍 SpringBoot的本质是SpringFramew
  • 4:SpringBoot-Starter-Java Spring

    目录 4 1 SpringBoot Starter介绍4 1 Starter原理4 3 Starter依赖引入4 4 Starter配置 4 1 SpringBoot Starter介绍 Starter是SpringBoot的一种服务 xf
  • 5:SpringBoot-Actuator-Java Spring

    目录 5 1 SpringBoot Actuator介绍5 2 Endpoints 介绍5 3 Actuator原理5 4 Actuator依赖引入 5 1 SpringBoot Actuator介绍 Actuator是Spring Boo
  • Ubuntu 20.04 VNC 安装与设置

    原链接 VNC是一个远程桌面协议 按照本文的说明进行操作可以实现用VNC对Ubuntu 20 04进行远程控制 一般的VNC安装方式在主机没有插显示器的时候是无法使用的 下面的操作可以在主机有显示器和没有显示器时都能够正常工作 首先安装x1
  • 6:RestFul API-Java Spring

    目录 6 1 RestFul API介绍6 2 URL构成6 3 RestFul API原理6 4 RestFul API映射注解6 5 RestFul API操作 6 1 RestFul API介绍 Rest表示性状态转移 xff08 R
  • 7:JSON-Java Spring

    目录 7 1 JSON介绍7 2 JSON和XML的区别7 3 JSON的构成7 4 JSON的语法7 5 JSON parse 7 6 JSON stringify 7 1 JSON介绍 JSON即JavaScript 对象标记法 xff
  • 8:Spring MVC-Java Spring

    目录 8 1 WEB开发模式一8 2 WEB开发模式二8 3 Spring MVC介绍8 4 Spring MVC主要组件8 5 Spring MVC处理流程8 6 Spring MVC的HTTP请求方法 在Web开发中有两种主要的结构 x
  • 9:参数校验-Java Spring

    目录 9 1 参数校验介绍9 2 JSR3039 3 Hibernate Validator9 4 参数校验依赖引入 9 1 参数校验介绍 参数校验即保证数据的合法性 xff0c JCP组织定义了一个标准来规范化这个任务操作 xff0c 即
  • 江服校园导游咨询系统-数据结构课程设计

    目录 1 需求分析1 1 问题描述1 2 系统简介1 3 系统模块功能要求介绍1 4 系统开发环境及开发人员1 5 校园平面图 2 概要设计2 1 算法设计及存储结构说明2 2 系统功能设计 3 详细设计3 1 定义符号变量3 2 主程序模
  • 基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计

    目录 1 项目概述1 1 项目介绍1 2 项目开发环境1 3 小组人员及分工 2 需求分析2 1 系统需求分析2 2 可行性分析2 3 项目实施安排 3 系统硬件设计3 1 系统整体硬件电路设计3 2 STM32 最小系统电路设计3 3 传
  • QX-A51智能小车实现-物联网应用系统设计项目开发

    目录 介绍说明展示 介绍 STC89C52系列单片机是STC推出的新一代高速 低功耗 超强抗干扰 超低价的单片机 xff0c 指令代码完全兼容传统8051单片机 xff0c 12时钟每机器周期和6时钟每机器周期可以任意选择 QX A51智能
  • 11:跨域访问-Java Spring

    目录 11 1 跨域访问11 2 同源策略11 3 跨域解决方案 11 1 跨域访问 跨域指的是浏览器不能执行其他网站的脚本 xff0c 当一个请求url的协议 域名 端口三者有任意一个不同即为跨域 无法跨域是由浏览器的同源策略造成的 xf
  • 10:@Validated和@Valid-Java Spring

    目录 10 1 64 Valid10 2 64 Validated10 2 区别10 2 Controller参数校验 10 1 64 Valid 64 Valid 是 Hibernate validation 提供的注解 xff0c 表示