springmvc的@Validated注解使用

下面我将为您详细讲解“springmvc的@Validated注解使用”的完整攻略。

什么是@Validated注解

在Spring MVC中,我们经常需要在控制器方法中对传入的参数进行校验,@Validated注解就是用来实现参数校验的。

如何使用@Validated注解

  1. 配置Spring MVC支持参数校验

首先需要在Spring MVC的配置文件中开启参数校验功能。在Spring Boot应用中,默认已经开启,只需要在控制器方法参数上添加@Validated注解即可。

在传统的Spring MVC应用中,需要在配置文件中开启参数校验功能:

<!--启用MVC Controller层的注解,例如@Validated -->
<mvc:annotation-driven/>
  1. 添加@Validated注解在控制器方法参数上

在需要进行参数校验的控制器方法的参数上添加@Validated注解。例如:

@RequestMapping(value = "/user", method = RequestMethod.POST)  
@ResponseBody  
public JsonResult addUser(@RequestBody @Validated User user) {  
    //业务逻辑处理  
    return JsonResult.success();  
}  

在这个例子中,我们需要对@RequestBody注解的User对象进行校验,因为校验注解只能添加在JavaBean上,所以需要在User类的需要校验的字段上添加相应的校验注解。例如:

@Data
public class User {
    @NotNull(message = "姓名不能为空")
    private String name;
    @Min(value = 18, message = "年龄不能小于18岁")
    private int age;
}

在这个例子中,我们添加了@NotNull和@Min注解,用来分别校验name和age字段。

  1. 处理校验结果

在控制器方法上添加BindingResult参数,用来接收校验结果。 如果校验结果中有错误,则需要将错误信息返回给客户端。

@RequestMapping(value = "/user", method = RequestMethod.POST)  
@ResponseBody  
public JsonResult addUser(@RequestBody @Validated User user, BindingResult bindingResult) {  
    if (bindingResult.hasErrors()) {  
        //将校验错误信息返回给客户端
        List<ObjectError> errors = bindingResult.getAllErrors();  
        StringBuilder builder = new StringBuilder();  
        for (ObjectError error : errors) {  
            builder.append(error.getDefaultMessage()).append(";");  
        }  
        return JsonResult.error(builder.toString());  
     }  
    //业务逻辑处理  
    return JsonResult.success();  
}  

在这个例子中,我们添加了BindingResult参数,并且检查是否有校验错误。如果有,则遍历所有的错误信息,并将错误信息以字符串的形式返回给客户端。

  1. 注意事项

  2. 校验注解只能添加在JavaBean的属性上。

  3. 如果一个JavaBean中的多个属性需要进行校验,则可以使用@Valid注解,例如:
@Data
public class User {
    @NotNull(message = "姓名不能为空")
    private String name;
    @Valid  // 在嵌套对象中添加@Valid注解
    private List<Role> roles;
}
  • @Validated注解和@Valid注解的区别,@Validated注解和@Valid注解本质上是一样的,但是@Validated注解可以指定校验分组。例如:
public interface GroupA {
}

@Data
public class User {
    @NotNull(message = "姓名不能为空", groups = {GroupA.class})
    private String name;
    @Min(value = 18, message = "年龄不能小于18岁")
    private int age;
}

在这个例子中,我们定义了一个分组GroupA,可以在@NotNull注解中指定分组信息。在进行校验时,只会对指定分组的校验注解进行校验。

综上所述,这就是@Validated注解的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc的@Validated注解使用 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Sprint Boot @Positive使用方法详解

    @Positive是Spring Boot中的一个注解,用于标记一个字段或方法参数必须为正数。在本文中,我们将详细介绍@Positive注解的作用和使用方法,并提供两个示例说明。 @Positive注解的作用 @Positive注解用于标记一个字段或方法参数必须为正数。当使用@Positive注解标记一个字段或方法参数时,如果该字段或方法参数为非正数,则会抛…

    Java 2023年5月5日
    00
  • editplus怎么运行java程序?

    下面是完整的攻略: EditPlus如何运行Java程序 想要在EditPlus中运行Java程序,需要完成以下步骤: 安装Java运行时环境 配置Java环境变量 新建Java文件 编写Java代码 保存Java文件 编译Java文件 运行Java程序 接下来,将详细介绍每一步的具体操作。 1. 安装Java运行时环境 运行Java程序必须先安装Java运…

    Java 2023年5月19日
    00
  • Spring Boot如何使用JDBC获取相关的数据详解

    下面是关于“Spring Boot如何使用JDBC获取相关的数据详解”的完整攻略。 1. 添加JDBC依赖 在Spring Boot项目中使用JDBC,需要在pom.xml文件中添加相应的依赖。在本示例中,我们使用MySQL数据库,因此需要添加以下依赖: <dependency> <groupId>mysql</groupId&…

    Java 2023年5月20日
    00
  • java实现服务器文件打包zip并下载的示例(边打包边下载)

    让我详细讲解“Java实现服务器文件打包zip并下载的示例(边打包边下载)”的完整攻略。 1. 准备工作 在开始操作之前,需要准备以下两件事情: 相应的Java开发环境; 一个Web服务器,如Tomcat。 2. 解压文件并创建Java项目 首先,需要从服务器中解压需要打包的文件。接下来,在Java项目中创建以下文件夹: src/main/java src/…

    Java 2023年5月19日
    00
  • java最新版本连接mysql失败的解决过程

    下面我将详细讲解 Java 最新版本连接 MySQL 失败的解决过程的完整攻略。 问题描述 在使用 Java 最新版本连接 MySQL 数据库时,可能会遇到连接失败的问题。这个问题可能涉及到 MySQL 数据库、Java 连接、Java 依赖库等多个方面。具体的表现可能包括但不限于以下情况: 报错信息中包含“java.sql.SQLNonTransientC…

    Java 2023年5月20日
    00
  • Mybatis学习笔记之动态SQL揭秘

    Mybatis 是一种流行的持久化框架,其核心是SQL映射文件。动态SQL是Mybatis的重要功能之一,可以帮助开发人员解决复杂的SQL语句拼接问题,从而提高开发速度和可维护性。本文将为您详细讲解Mybatis动态SQL的使用方法和技巧。 什么是动态SQL Mybatis的SQL语句是通过XML文件进行配置的,因此可以灵活地进行动态SQL语句的拼接。动态S…

    Java 2023年6月1日
    00
  • Java中的反射,枚举及lambda表达式的使用详解

    “Java中的反射,枚举及lambda表达式的使用详解”是一个广泛应用于Java编程中的话题。本文将从三个方面详细介绍这三个重要的概念。 反射的使用 反射是Java中一种重要的机制,可以在运行时获取并操作类的信息。用反射可以动态地操作对象的成员变量、方法、构造函数和其他属性。以下是使用反射的基本步骤: 步骤1:获取类的Class对象 要使用反射,需要获取Cl…

    Java 2023年5月26日
    00
  • Java 自定义动态数组方式

    Java中没有内置的动态数组类,需要我们自己实现。下面是Java自定义动态数组的完整攻略。 需求分析 我们需要实现一个具有动态扩容功能的数组。当数组空间不够时,需要动态扩充,保证数据能够正常存储。 实现步骤 定义一个数组类,包含数组容量大小、元素个数和数组本身三个属性。 java public class CustomArray<T> { pri…

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