Hibernate-validator校验框架使用

Hibernate-validator校验框架 该验证框架是在Hibernate-validator的基础上进行封装而成,方便后台的接口验证 阅读详情
可以有两种使用方法:

第一种:在要检验的Dto对象之前加@Valid注解,这种方法必须配合BindingResult参数一起使用,否则验证不通过就会返回400,并且抛出"org.springframework.validation.BindException"异常,举例如下。这种交互不利于前端获取校验信息,因此需要配合BindingResult对校验结果进行封装之后再返回给前端。

{
  "timestamp": 1489024472175,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.validation.BindException",
  "errors": [
    {
      "codes": [
        "Range.userDto.age",
        "Range.age",
        "Range.int",
        "Range"
      ],
      "arguments": [
        {
          "codes": [
            "userDto.age",
            "age"
          ],
          "arguments": null,
          "defaultMessage": "age",
          "code": "age"
        },
        150,
        1
      ],
      "defaultMessage": "年龄必须介于1到150之间",
      "objectName": "userDto",
      "field": "age",
      "rejectedValue": 152,
      "bindingFailure": false,
      "code": "Range"
    }
  ],
  "message": "Validation failed for object='userDto'. Error count: 1",
  "path": "/test/login2"
}

具体可以参考这个例子

第二种:将validation逻辑封装成工具类,使用工具类对dto进行校验,然后根据校验结果做响应的处理。封装好的一个工具类如下。

public class ValidationUtils {

	private static Validator validator =  Validation.buildDefaultValidatorFactory().getValidator();
	
	public static <T> ValidationResult validateEntity(T obj){
		ValidationResult result = new ValidationResult();
		 Set<ConstraintViolation<T>> set = validator.validate(obj,Default.class);
		 if( CollectionUtils.isNotEmpty(set) ){
			 result.setHasErrors(true);
			 Map<String,String> errorMsg = new HashMap<String,String>();
			 for(ConstraintViolation<T> cv : set){
				 errorMsg.put(cv.getPropertyPath().toString(), cv.getMessage());
			 }
			 result.setErrorMsg(errorMsg);
		 }
		 return result;
	}
	
	public static <T> ValidationResult validateProperty(T obj,String propertyName){
		ValidationResult result = new ValidationResult();
		 Set<ConstraintViolation<T>> set = validator.validateProperty(obj,propertyName,Default.class);
		 if( CollectionUtils.isNotEmpty(set) ){
			 result.setHasErrors(true);
			 Map<String,String> errorMsg = new HashMap<String,String>();
			 for(ConstraintViolation<T> cv : set){
				 errorMsg.put(propertyName, cv.getMessage());
			 }
			 result.setErrorMsg(errorMsg);
		 }
		 return result;
	}
}
具体实现可以参考这个例子

Hibernate-validator校验框架使用教程 这几天刚好在弄接口相关东西,发现如果对某个多字段的实体进行验证的话,会写很多麻烦而且冗余的代码,所以学了一下相关验证框架。 阅读详情

相关推荐

数据校验框架Hibernate-Validator

看到这个结果发现我们添加的校验框架起作用了,响应信息中存在了"邮箱不能为空"的信息,但是前端用户一般只关心一个校验结果和校验失败信息,现在返回的这个信息太多了很难让人接受。@Length(min=, max=) 被注释的字符串的大小必须在指定的范围内,必须为数组或者字符串,若微数组则表示为数组长度,字符串则表示为字符串长度。@Size(max, min) 被注释的元素的大小必须在指定的范围内,元素必须为集合,代表集合个数。@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

qq_38667268的博客 524

Hibernate-Validator(数据校验框架)

Hibernate-Validator(数据校验框架)

weixin_45080272的博客 1万+

Hibernate Validator校验框架的基本使用

Java使用Hibernate Validator框架进行参数校验。 Java后端校验参数,@NotNull、@NotBlank、@NotEmpty等注解的使用。@Valid和@Validated的区别

life-for-rent的博客 954

Hibernate Validator 数据校验框架

JSR:Java Specification Requests的缩写,意思是Java规范提案是指向JCP(Java Community Process) 提出新增一个标准化技术规范的正式请求任何人都可以提交JSR,以向Java平台增添新的API和服务JSR已成为Java界的一个重要标准就是这个JSR规范之一Bean Validation是一个运行时的数据验证框架的标准JSR303是专家组成员向JCP提交的第1版Bean Validation,即针对bean数据校验提出的一个规范,

从基础到源码解析的学习记录 4912

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 286

Unreal5(虚幻五) 实现UI与C++代码逻辑的交互 保姆级教程

本人有Unity基础,刚学UE几天,把这一套处理流程记录一下备用。

qq_42915442的博客 9816

Hibernate Validator 使用详解

定义自定义约束,有三个步骤创建约束注解实现一个验证器定义默认的错误信息实战:自定义手机号码校验器/*** 错误提示信息,可以写死,也可以填写国际化的key*/String message() default "手机号码不正确";Class

zhouzhiwengang的专栏 8652

<IBM DB2>《DB2 官方监控脚本 2022版本》

DB2 监控脚本

Else 的博客 672

Hibernate-Validator的使用(一)

key用{}括起来}这里定义两个文件ValidationMessages_zh_CN.properties和ValidationMessages_en_US.properties来做测试。二者均放在resource目录下ValidationMessages_en_US.properties的内容userName.invalid= userName ${validatedValue} is invalid。

本博客已迁移到 https://jacksparrow414.com 2867

探索激光焊接光束质量诊断系统:原理、应用与前沿

激光焊接光束质量诊断系统是一套专门用于精确评估和监测激光焊接过程中光束特性的精密设备。它宛如一个精密的 “光束医生”,能够全方位地对激光光束进行 “体检”,为焊接工艺提供关键的数据支持。探测器:作为系统的 “感知触角”,探测器负责捕捉激光光束的各种信息,其性能直接影响着诊断的准确性。例如,常见的 CCD(电荷耦合器件)探测器和 CMOS(互补金属氧化物半导体)探测器,它们能够将光信号转化为电信号,具有高灵敏度、高分辨率等特点,可精确探测光束的强度分布、光斑位置等参数。光学透镜。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2585

基于 Qt C++ 的 船舶导航系统 UI

你想实现一个基于 **Qt C++** 的 **船舶导航系统 UI**,核心功能包括 **Qt Quick** 电子海图显示和 **NMEA 0183** 协议解析。"断开" : "连接"创建一个 Qt Quick 项目,选择 **Qt 6** 版本,确保勾选 **Qt Quick**、**Qt Network** 和 **Qt SQL** 模块。Label { text: "纬度:" }3. **连接设备**:点击 "连接" 按钮连接到 GPS 设备或模拟数据源。title: "连接设置"

寒寒豆豆软件公司的博客 127

Hibernate-Validator

Hibernate-Validator注解学习笔记

weixin_47872568的博客 1365

手把手教你学Simulink--H桥逆变器的PWM控制设计与仿真

本文详细介绍了如何在Simulink环境中设计和仿真一个基于PWM控制的H桥逆变器。H桥逆变器广泛应用于电机驱动、UPS和可再生能源系统等领域,通过PWM技术可以有效控制输出电压的幅度和频率,减少谐波失真,提高系统效率和稳定性。文章首先介绍了所需的工具和环境,包括MATLAB/Simulink和SimscapeElectrical工具箱。接着,详细阐述了从定义任务需求、创建Simulink项目、建立基础电气模型、集成传感器模型、实现PWM控制算法到设置仿真参数和运行仿真的完整步骤。最后,文章总结了通过Sim

MHD0815的博客 719

高效使用hibernate-validator校验框架

一、前言   高效、合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑。接下来会介绍一下常用一些使用方式。 二、常用注解说明 限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为tr...

胡峻峥的博客 1336

哨兵1号回波数据(L0级)提取与SAR成像(全网首发)

本文先展示提取出的回波结果,然后使用RD算法进行成像,展示成像结果,最后附上哨兵1号回波提取的MATLAB代码。

3797

架构师成长之路(1)--什么是架构师

前言: 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。 如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做), 执行/行动找准自己定位:我是谁?在哪里...

黄规速博客:学如逆水行舟,不进则退 6万+

jfinal整合Hibernate-validator校验框架

做服务器开发时,我们接收到前端传来的参数都需要进行校验,判断参数是否合法,现在基本都是采用最傻逼且最苦逼的方法,就是在每个函数里都进行参数校验,但是有很多相同的参数都要在不同函数里重复出现校验的代码,比如用户注册时需要校验手机号码、密码、年龄和验证码;用户登录时需要校验手机号码和密码,用户修改信息时需要校验年龄,于是乎,每个请求方法里都相同的校验判断语句,如图:        反复复制粘贴相同

1734

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

基于hibernate_validator的异步表单校验框架使用说明

表单校验框架使用说明V 0.3Ivan 2016.02.17   目录 一、引入依赖 3 1.Maven方式 3 2.Jar方式 3 二、为实体类添加校验注解 3 1.编写实体和添加校验注解 4 三、编写表单页面 5 1.引入依赖 5 2.添加表单 5 3.初始化异步校验器 6 四、编写控制器 7 1.继承BaseController 7

IU软件 2392

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用javax的validation和hibernate-validator框架对pojo类的属性进行校验以及扩展

背景:如果页面表单有很多字段需要提交,因此使用注解校验的方式针对pojo的属性进行校验 因此使用javax标准以及org.hibernate的validator的注解校验 具体的javax的validation的注解以及hibernate的注解都是可以使用的,具体的扩展可以在网上找找,目前在这里就不再进行扩展了。一开始项目使用spring-module 0.9的jar,发现这个鬼东西不支持spr...

红豆和绿豆的博客 3534

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hibernate-Validator框架完成数据校验

Hibernate-Validator框架完成数据校验 在我们实现注册的时候,一般前端都会加上校验,而前端的校验是很容易被有心人绕过的。所以我们必须在后台添加数据校验功能: 我们这里会使用Hibernate-Validator框架完成数据校验: 而SpringBoot的web启动器中已经集成了相关依赖: 什么是Hibernate Validator Hibernate Validator是Hibernate提供的一个开源框架,使用注解方式非常方便的实现服务端的数据校验。 官网:http://hiberna

qq_39095899的博客 323

校验框架hibernate-validator

校验框架hibernate-validator 1.pom.xml依赖 <!--导入校验的jsr303规范:接口--> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency&

qq_50990903的博客 702
上一篇: 浮点数中的陷进
下一篇: Java集合类型遍历和排序
houwanxing
博客等级 码龄12年 13粉丝 47原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值