Spring-Boot-Valid的使用

本文介绍如何使用@Valid注解进行表单验证,包括如何设置限制条件及错误处理流程。通过实例展示了如何在Java Bean中使用@Min注解限制年龄字段,并通过BindingResult获取验证失败时的错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.表单验证 用到的注解 @Valid (合法的)
1.如果public User findone(@RequestParam(“id”) Integer id)种的注解后的参数很多,直接传一个对象即可
2.加限制;
a.在bean中对要加限制的属性添加@Min注解

@Min(value = 18,message = "未成年用户禁止入内")
    private Integer age;
    b,在方法传入的对象前面加入@Valid注解,以及通过BindingResult来获取结果集
   public User addUser(@Valid User user, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
//            获取错误信息,并打印
            System.out.println(bindingResult.getFieldError().getDefaultMessage());
//            禁止其继续执行
            return null;
        }
            user.setUsername(user.getUsername());
            user.setPassword(user.getPassword());
            return userRespository.save(user);
    }
### 使用 `spring-boot-starter-validation` 进行参数校验 为了在 Spring Boot 中实现参数校验功能,需先引入必要的依赖项。具体来说,在项目的 `pom.xml` 文件中加入如下配置: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> ``` 之后,通过使用不同的注解来定义数据验证规则。以下是几种常用的约束注解及其作用说明[^1]。 #### 定义实体类并应用校验注解 创建一个用于接收请求的数据传输对象 (DTO),并在其字段上添加相应的校验注解。例如: ```java public class UserDto { @NotNull(message = "用户名不能为空") private String username; @Email(message = "邮箱格式不正确") private String email; @Min(value = 0, message = "年龄不能小于零") @Max(value = 120, message = "年龄超出合理范围") private Integer age; } ``` 上述代码片段展示了如何利用 `@NotNull`, `@Email`, `@Min`, 和 `@Max` 注解来进行基本类型的输入校验[^3]。 #### 控制器层处理 为了让控制器能够识别这些校验逻辑,可以在方法参数前加上 `@Validated` 或者 `@Valid` 注解。当表单提交时,如果存在违反预设条件的情况,则会触发错误响应返回给客户端。 ```java @RestController @RequestMapping("/users") public class UserController { @PostMapping public ResponseEntity<String> createUser(@Validated @RequestBody UserDto user) { // 处理业务逻辑... return ResponseEntity.ok("User created successfully"); } } ``` 这里需要注意的是,`@Validated` 是由 Spring 提供的一个增强版的 `@Valid`,允许更灵活地指定分组顺序和其他特性[^2]。 一旦发生校验失败,默认情况下框架将会自动捕获异常并将详细的错误信息反馈至前端界面。当然也可以自定义全局异常处理器来自定义错误提示信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值