解决get请求入参@NotNull验证不生效问题

针对“解决get请求入参@NotNull验证不生效问题”的问题,我们可以采取以下步骤进行解决。

  1. 引入相关依赖

首先,在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

以上依赖可以引入 Spring Boot 默认提供的校验工具,包括了常用的校验注解。

  1. 在接口参数上添加校验注解

在接口参数上可以根据需要添加不同的校验注解,比如我们需要验证一个参数不为 null,则可以添加 @NotNull 注解,如下所示:

@GetMapping("/test")
public void testMethod(@RequestParam(name = "param") @NotNull String param) {
    // do something
}

上述代码中的 @NotNull 注解表示 param 参数不能为空,如果传入的参数为 null,则会校验失败,并且会返回校验错误信息。

  1. 添加全局异常处理器

如果使用上述方法添加了校验注解,但在实际使用中却发现校验不生效,可能是因为我们没有添加全局异常处理器,导致校验错误信息无法被捕捉到。

在 Spring Boot 中,我们可以通过添加 @ControllerAdvice 注解来实现全局异常处理器,如下所示:

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    /**
     * 重写处理 MethodArgumentNotValidException 异常的方法
     */
    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
        // 获取所有校验失败的错误信息
        List<String> errorList = ex.getBindingResult().getFieldErrors().stream().map(FieldError::getDefaultMessage).collect(Collectors.toList());
        // 封装错误信息并返回
        return new ResponseEntity<>(errorList, HttpStatus.BAD_REQUEST);
    }
}

以上代码中,我们通过重写 handleMethodArgumentNotValid 方法,获取所有校验失败的错误信息,并将其封装在 ResponseEntity 中返回。

  1. 示例说明

我们以 GET 方式传参的场景为例来展示上述方法的使用。

首先,使用 Postman 等工具发送一个 GET 请求,携带一个空参数 param,如下所示:

http://localhost:8080/test?param=

此时应该会收到 400 错误响应,响应内容为参数校验失败的错误信息。

如果我们将 param 参数设置为非空值,再次发送请求,则应该会成功通过校验并返回正常响应。

结论:通过引入校验工具和添加全局异常处理器,我们可以解决 GET 请求入参 @NotNull 验证不生效的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决get请求入参@NotNull验证不生效问题 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • 浅谈springfox-swagger原理解析与使用过程中遇到的坑

    浅谈springfox-swagger原理解析与使用过程中遇到的坑 1. 什么是springfox-swagger springfox-swagger是一个用于生成API文档的Java库,它可以自动化生成API文档,并提供了一个UI界面,方便用户查看和测试API接口。它基于Swagger规范,可以与Spring框架无缝集成,支持Spring MVC、Spri…

    Java 2023年5月18日
    00
  • 常见的Java代码优化技巧有哪些?

    常见的Java代码优化技巧主要包括以下几个方面: 1.减少内存使用: Java程序运行时需要占用内存,因此减少内存使用可以提高Java程序的运行速度。具体方法包括: 避免使用过多的静态变量,因为静态变量会在程序启动时立即进行初始化,从而占用额外的内存空间。 避免在循环中创建多余的对象,因为对象创建也需要占用内存。 使用轻量级的容器,如ArrayList代替V…

    Java 2023年5月11日
    00
  • 浅析Java中对象的创建与对象的数据类型转换

    这里是“浅析Java中对象的创建与对象的数据类型转换”的攻略。 1. 对象的创建 Java中的对象可以由new关键字创建,一个对象的创建需要以下步骤: 分配对象的内存空间:在堆内存中为新对象分配一片连续的空间,这个空间的大小由对象的数据类型和属性决定。 执行构造函数:在分配好内存空间之后,JVM会执行对象的构造函数,初始化对象的属性值等。 将对象的引用返回给…

    Java 2023年5月26日
    00
  • Java FastJson使用教程

    Java FastJson使用教程 什么是FastJson? FastJson是阿里巴巴的开源JSON处理库,它能够将Java对象转换成JSON格式的数据,也可以将JSON格式的数据转换成Java对象。FastJson处理速度极快,是目前Java平台上最快的JSON处理器之一。 FastJson的安装和配置 最简单的方法是通过Maven来引入FastJson…

    Java 2023年5月26日
    00
  • java实现超市管理系统

    Java实现超市管理系统攻略 超市管理系统利用了Java编程语言,可通过图形用户界面(GUI)使用。下面是该系统的完整攻略。 第一步:设计系统架构 在设计任何软件之前,我们必须首先确定系统的完整架构。超市管理系统需要设计以下要素: 一个用户登录界面 商品管理模块 库存管理模块 销售管理模块 支付管理模块 第二步:实现系统演示添加物品 接下来,我们将演示如何使…

    Java 2023年5月23日
    00
  • 谈谈JavaScript自定义回调函数

    谈谈JavaScript自定义回调函数 什么是回调函数? 回调函数是一种特殊的函数,它作为参数传递给另一个函数并且在主函数执行完成后被调用。通常情况下,回调函数用于处理异步操作。比如,当一个网络请求完成时,需要回调函数来处理返回的数据。 JavaScript自定义回调函数的基本用法 在JavaScript中,我们可以通过自定义函数来实现回调函数的功能。下面是…

    Java 2023年6月15日
    00
  • java实现字符串匹配求两个字符串的最大公共子串

    Java实现字符串匹配求两个字符串的最大公共子串可以通过以下步骤来实现: 首先,我们需要定义两个字符串用于匹配,并创建一个函数或方法来解决此问题。 示例代码: public static String longestCommonSubstring(String s1, String s2) { int len1 = s1.length(), len2 = s…

    Java 2023年5月19日
    00
  • 如何在Jsp中使用JDBC来联结MySql

    下面是如何在JSP中使用JDBC连接MySQL的攻略: 1. 添加MySQL JDBC驱动 1.1 下载MySQL JDBC驱动:在MySQL官网下载mysql-connector-java jar包。下载地址:https://dev.mysql.com/downloads/connector/j/。 1.2 将mysql-connector-java ja…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部