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日

相关文章

  • Springmvc自定义类型转换器实现步骤

    SpringMVC自定义类型转换器说明 SpringMVC中,当客户端提交的表单数据类型与服务端接受的参数类型不匹配时,根据参数绑定规则,SpringMVC会首先尝试进行类型转换,将请求参数转换成指定类型的参数,然后将转换后的参数赋值给方法参数,进而调用处理方法。如果SpringMVC默认的转换器无法完成类型转换,则会抛出异常,导致请求处理失败。 这时候,我…

    Java 2023年5月16日
    00
  • 12种最常用的网页编程语言简介(值得收藏)

    首先,我们需要了解网页编程语言的概念和作用。网页编程语言指的是网站开发者使用的语言,用于构建网站的前端和后端部分。网页编程语言可以分成前端语言和后端语言两种。前端语言用于网站的外观和用户交互,后端语言用于网站的数据处理和服务器与数据库等操作。本文将介绍12种最常用的网页编程语言,分别为HTML、CSS、JavaScript、PHP、Python、Ruby、J…

    Java 2023年6月15日
    00
  • 使用spring aop 统一捕获异常和写日志的示例demo

    使用Spring AOP统一捕获异常和写日志可以提高程序的健壮性和可维护性,下面是示例demo的详细攻略: 一、添加依赖 在pom.xml中添加Spring AOP和Spring Boot Starter Logging的依赖: <dependency> <groupId>org.springframework.boot</gr…

    Java 2023年5月27日
    00
  • spring设置拦截器代码实例

    下面我将为你详细讲解”Spring设置拦截器代码实例”的完整攻略,包括以下内容: 什么是拦截器 Spring中的拦截器 设置Spring拦截器的步骤 两个代码示例 1. 什么是拦截器 拦截器(Interceptor)是一种AOP(面向切面编程)思想的应用,它是用来处理请求的,类似于Servlet中的过滤器(Filter)。拦截器可以在一个请求时的preHan…

    Java 2023年5月19日
    00
  • Java如何获取Date的“昨天”与“明天”示例代码

    获取Date的“昨天”与“明天”可以通过以下步骤实现: 步骤一:获取当前日期 首先,我们需要获取当前的日期。Java中可以使用java.util.Date类来表示日期时间。可以通过new Date()方法获取到当前的日期: Date today = new Date(); 步骤二:计算“昨天” 要计算“昨天”,我们需要通过java.util.Calendar…

    Java 2023年5月20日
    00
  • uniapp如何编写含有后端的登录注册页面

    uni-app是一个跨平台的前端框架,它可以让我们开发一次代码,然后在多个平台上进行部署。在这里,我们通过uni-app来实现含有后端的登录注册页面。 步骤一:创建uni-app应用 我们需要在本地创建一个uni-app应用,可以通过HBuilder X来创建。我们在控制台中进入到项目目录,然后执行以下命令: $ hbuilderx init 按照提示输入应…

    Java 2023年5月30日
    00
  • Maven管理SpringBoot Profile详解

    Maven管理SpringBoot Profile详解 简介 Spring Boot是一款基于Spring框架,更快地启动、开发和部署单独的Java应用程序的工具。在使用Spring Boot的过程中,我们经常需要使用到不同的配置和环境,而这些配置和环境可以通过Profile的方式进行管理。 本文将讲解如何利用Maven对Spring Boot的Profil…

    Java 2023年5月19日
    00
  • java web实现自动登录

    让我来简单介绍一下 “java web实现自动登录” 的实现方案。 1. 存储登录状态 在用户登录时,可以将该用户的相关登录信息存储到浏览器的 cookie 中,使得用户在下一次访问时无需重新登录,即可直接登录进入系统,这就是所谓的“自动登录”。 1.1 操作流程 1.用户登陆,输入用户名和密码。 2.后台服务器验证用户信息。若验证成功,则生成token(包…

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