广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot参数校验之@Valid怎么使用
  • 927
分享到

SpringBoot参数校验之@Valid怎么使用

2023-07-02 13:07:03 927人浏览 安东尼
摘要

这篇文章主要介绍“SpringBoot参数校验之@Valid怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springBoot参数校验之@Valid怎么使用”文章能帮助大家解决问题。依赖&l

这篇文章主要介绍“SpringBoot参数校验之@Valid怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springBoot参数校验之@Valid怎么使用”文章能帮助大家解决问题。

依赖

<dependency>    <groupId>org.hibernate.validator</groupId>    <artifactId>hibernate-validator</artifactId></dependency>

代码 

Controller

package com.example.demo.simple.controller; import com.example.demo.simple.entity.User;import io.swagger.annotations.api;import io.swagger.annotations.ApiOperation;import org.springframework.validation.BindingResult;import org.springframework.validation.ObjectError;import org.springframework.WEB.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid;import java.util.List; @Api(tags = "不分组")@RestController@RequestMapping("valid")public class ValidController {     @ApiOperation("正常用法")    @GetMapping("nORMal")    public User normal(@Valid User user) {        return user;    }     @ApiOperation("获得BindingResult")    @GetMapping("bindingResult")    public User bindingResult(@Valid User user, BindingResult bindingResult) {        if (bindingResult.hasErrors()){            List<ObjectError> list = bindingResult.getAllErrors();            for (ObjectError objectError : list) {                System.out.println(objectError.getDefaultMessage());            }            //System.out.println(bindingResult.getFieldError().getDefaultMessage());        }         return user;    } }

Entity

User类

package com.example.demo.simple.entity; import lombok.Data; import javax.validation.Valid;import javax.validation.constraints.NotBlank;import javax.validation.constraints.NotEmpty;import javax.validation.constraints.NotNull;import java.util.List; @Datapublic class User {    @NotBlank(message = "名字不能为空")    private String name;     private Integer age;     @NotBlank(message = "密码不能为空")    private String passWord;     @NotEmpty(message = "分数不能为空")    private List<Integer> scoreArray;     @Valid    @NotNull(message = "账户不能为null")    private Account account;}

Account类

package com.example.demo.simple.entity; import lombok.Data; import javax.validation.constraints.NotBlank;import javax.validation.constraints.NotEmpty;import java.io.Serializable; @Datapublic class Account {    @NotBlank(message = "电话号码不能为空")    private String phoneNumber;     private String[] emails;}

测试

本文为了展示后端错误,直接用postman来进行请求。

实际上,如果用了knife4j这个接口工具,它能自动识别是否为空的注解,并在前端进行控制。如果不能为空,则前端直接显示为红色的框。

SpringBoot参数校验之@Valid怎么使用

测试1:缺少字段

postman访问:Http://localhost:8080/valid/normal

postman访问结果:

SpringBoot参数校验之@Valid怎么使用

后端结果:

2021-12-22 15:32:20.032  WARN 94176 --- [NIO-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 3 errors
Field error in object 'user' on field 'account': rejected value [null]; codes [NotNull.user.account,NotNull.account,NotNull.com.example.demo.simple.entity.Account,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.account,account]; arguments []; default message [account]]; default message [账户不能为null]
Field error in object 'user' on field 'password': rejected value [null]; codes [NotBlank.user.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.password,password]; arguments []; default message [password]]; default message [密码不能为空]
Field error in object 'user' on field 'scoreArray': rejected value [null]; codes [NotEmpty.user.scoreArray,NotEmpty.scoreArray,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.scoreArray,scoreArray]; arguments []; default message [scoreArray]]; default message [分数不能为空]]

测试2:不缺少字段

postman访问:http://localhost:8080/valid/normal

postman结果:

SpringBoot参数校验之@Valid怎么使用

测试3:缺少字段,后端获取BindResult 

postman访问:http://localhost:8080/valid/bindingResult

postman结果:

SpringBoot参数校验之@Valid怎么使用

后端结果

账户不能为null
密码不能为空
分数不能为空

可以看到,没有报错。 

关于“SpringBoot参数校验之@Valid怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: SpringBoot参数校验之@Valid怎么使用

本文链接: https://www.lsjlt.com/news/342144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot参数校验之@Valid怎么使用
    这篇文章主要介绍“SpringBoot参数校验之@Valid怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot参数校验之@Valid怎么使用”文章能帮助大家解决问题。依赖&l...
    99+
    2023-07-02
  • SpringBoot参数校验之@Valid的使用详解
    目录简介依赖代码 测试测试1:缺少字段测试2:不缺少字段测试3:缺少字段,后端获取BindResult 简介 说明 本文用示例说明SpringBoot的@Vali...
    99+
    2022-11-13
  • 使用@RequestBody配合@Valid校验入参参数
    目录@RequestBody配合@Valid校验入参参数自定义一个Controller自定义实体类自定义全局异常处理器附录@Valid校验@RequestBody的参数希望通过注解校...
    99+
    2022-11-13
  • SpringBoot参数怎么校验
    本篇内容主要讲解“SpringBoot参数怎么校验”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot参数怎么校验”吧!使用传统方式的弊端public String&nb...
    99+
    2023-06-30
  • SpringBoot怎么使用validation做参数校验
    这篇文章主要介绍了SpringBoot怎么使用validation做参数校验的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么使用validation做参数校验文章都会有所收获,下面我们一起...
    99+
    2023-06-30
  • SpringBoot参数校验之@Validated的使用详解
    目录简介依赖用法1:不分组代码测试用法2:分组代码测试简介 说明 本文用示例说明SpringBoot的@Validated的用法。 依赖 <dependency> ...
    99+
    2022-11-13
  • SpringBoot参数校验Validator框架怎么使用
    这篇“SpringBoot参数校验Validator框架怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringB...
    99+
    2023-07-02
  • SpringBoot怎么进行参数校验
    这篇文章主要讲解了“SpringBoot怎么进行参数校验”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么进行参数校验”吧!介绍在日常的接口开发中,为了防止非法参数对业务...
    99+
    2023-06-30
  • springboot参数格式怎么校验
    这篇文章主要介绍“springboot参数格式怎么校验”,在日常操作中,相信很多人在springboot参数格式怎么校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”springboot参数格式怎么校验”的疑...
    99+
    2023-06-08
  • 使用@Valid+BindingResult进行controller参数校验方式
    目录@Valid+BindingResult进行controller参数校验Controller层方法的参数校验全局统一异常拦截器@Valid+BindingResult进行cont...
    99+
    2022-11-12
  • 如何使用@Valid+BindingResult进行controller参数校验
    这篇文章主要介绍“如何使用@Valid+BindingResult进行controller参数校验”,在日常操作中,相信很多人在如何使用@Valid+BindingResult进行controller参数校验问题上存在疑惑,小编查阅了各式资...
    99+
    2023-06-21
  • 参数校验Spring的@Valid注解有什么用
    小编给大家分享一下参数校验Spring的@Valid注解有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!参数校验Spring的@Valid注解@Valid ...
    99+
    2023-06-20
  • springboot 中怎么校验参数格式
    本篇文章给大家分享的是有关springboot 中怎么校验参数格式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。springboot 参数格式校验@Validated 字面意思...
    99+
    2023-06-20
  • Springboot 如何使用BindingResult校验参数
    目录使用BindingResult校验参数1、创建一个参数对象2、controller控制层写参数接收的入口3、传入参数和控制台打印结果4、常用校验注解BindingResult 作...
    99+
    2022-11-13
  • java如何优雅的实现参数非空校验,快速实现参数非空校验,使用@valid实现参数非空校验
    在java项目接口中,有些必传参数需要进行非空校验,如果参数过多,代码会繁杂且冗余,如何优雅的对参数进行非空校验,下面是实现流程 目录 一、整体思路二、引入依赖1、SpringBoot项...
    99+
    2023-10-21
    java 开发语言
  • SpringBoot使用validation做参数校验说明
    目录1.添加依赖直接添加 hibernate-validator添加spring-boot-starter-validation添加spring-boot-starter-...
    99+
    2022-11-13
  • 参数校验Spring的@Valid注解用法解析
    参数校验Spring的@Valid注解 @Valid 注解通常用于对象属性字段的规则检测。 以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解。 那...
    99+
    2022-11-12
  • SpringBoot开发详解之Controller接收参数及参数校验
    目录Controller 中注解使用传输参数的几种Method获取参数的几种常用注解使用对象直接获取参数使用@Valid对参数进行校验总结Controller 中注解使用 接受参数的...
    99+
    2022-11-13
  • Springboot怎么使用filter对request body参数进行校验
    这篇文章主要为大家展示了“Springboot怎么使用filter对request body参数进行校验”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Springboot怎么使用fil...
    99+
    2023-06-29
  • SpringBoot接口怎么对参数进行校验
    今天小编给大家分享一下SpringBoot接口怎么对参数进行校验的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是不优雅的...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作