当前位置: 首页 > news >正文

@Valid和@NotNull字段校验使用

@Valid和@NotNull字段校验使用

pom

网上讲了一堆,还是用spring-boot-starter-validation最好,用1踩坑了

<!--        <dependency>-->
<!--            <groupId>org.hibernate.validator</groupId>-->
<!--            <artifactId>hibernate-validator</artifactId>-->
<!--            <version>7.0.1.Final</version>-->
<!--        </dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

自定义异常通用处理类

为了捕获@Valid和@NotNull校验后抛出的异常

/*** 异常通用处理**/
@Slf4j
@ResponseBody
@ControllerAdvice
public class DefaultExceptionAdvice {//处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常@ExceptionHandler(BindException.class)public Result BindExceptionHandler(BindException e) {String message = e.getBindingResult().getFieldError().getDefaultMessage();return Result.failed(333, message);}//处理请求参数格式错误 @RequestBody上validate失败后抛出的异常是MethodArgumentNotValidException异常。@ExceptionHandler(MethodArgumentNotValidException.class)private Result<String> handleMethodArgumentNotValidException(MethodArgumentNotValidException e){log.error(e.getMessage(), e);String message = e.getBindingResult().getFieldError().getDefaultMessage();return Result.failed(333, message);}
}

Result.failed换成你自己的统一处理类

@Valid

 @PostMapping("/telecomMicroPay")public Result<HMQMicroPayRspBean> telecomMicroPay(@Valid @RequestBody HMQMicroPayReqBean hmqMicroPayReqBean) throws IOException, CustomException {log.info("api-channel/telecomHMQController/telecomMicroPay : HMQMicroPayReqBean{}", hmqMicroPayReqBean);HMQMicroPayRspBean hmqMicroPayRspBean = telecomTrxService.telecomMicroPay(hmqMicroPayReqBean);return Result.succeed(hmqMicroPayRspBean);}

@NotNull

@Data
@NoArgsConstructor
public class HMQMicroPayReqBean extends HMQBaseApi {@NotNull(message = "支付金额不能为空")private int totalAmount ;//支付金额,单位:分,该支付金额是实际金额。@NotNull(message = "商户订单号不能为空")private String outTradeNo = "10403103436W2WVVVVV11012226";//商户订单号,订单号必须唯一,长度 8-32 位@NotNull(message = "用户授权码不能为空")private String authCode = "135565156048122643"; //用户授权码//非必填private String payType;//0:微信1:支付宝3:翼支付5: 银联二维码 如果不传即自动识别private String openid;//好码齐系统中的 openid}

相关文章:

  • 编程笔记 html5cssjs 044 CSS显示
  • ssh: connect to host github.com port 22: Connection refused
  • PGSQL主键序列
  • Hypervisor 和Docker 还有Qemu有什么区别与联系?
  • 鸿蒙开发案列一
  • 基本的 Socket 模型
  • 反序列化字符串逃逸(上篇)
  • 【.NET Core】深入理解异步编程模型(APM)
  • python基础 - 变量
  • 78.网游逆向分析与插件开发-背包的获取-背包类的C++还原与获取物品名称
  • Python基础之文件操作(I/O)
  • html 3D 倒计时爆炸特效
  • mac os电脑用n切换node版本
  • 【ARM 嵌入式 C 入门及渐进7 -- C代码中的可变参数宏详细介绍】
  • 【0247】PG内核checkpoint实现机制分析(2)
  • Apache Spark Streaming 使用实例
  • CSS盒模型深入
  • HTML-表单
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js如何打印object对象
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • pdf文件如何在线转换为jpg图片
  • python 装饰器(一)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vue:响应原理
  • vue学习系列(二)vue-cli
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 翻译:Hystrix - How To Use
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 微服务框架lagom
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (12)Hive调优——count distinct去重优化
  • (20050108)又读《平凡的世界》
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (待修改)PyG安装步骤
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校实验室 毕业设计 800008
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (四)鸿鹄云架构一服务注册中心
  • (一)Java算法:二分查找
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NetCore部署微服务(二)
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET命令行(CLI)常用命令
  • .net中我喜欢的两种验证码
  • [ C++ ] STL_list 使用及其模拟实现
  • [ IOS ] iOS-控制器View的创建和生命周期