springboot参数验证框架,@Validated

该文章展示了如何在Java项目中利用Lombok简化实体类的创建,并结合SpringValidation进行前端参数的校验。通过在实体类中使用`@NotBlank`和`@Pattern`等注解定义验证规则,以及在控制器方法上添加`@Validated`来触发验证,当验证失败时返回错误信息。

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

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- 验证框架 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

接收前端参数的实体类 

package com.study.vo;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;

@Data
public class RegisterVO implements Serializable {

    // NotBlank是判断字符串不能为空
    // message是验证不通过时,反馈给用户的信息
    @NotBlank(message = "邀请码不能为空")
    private String inviteCode;          // 邀请码
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^1\\d{10}$", message = "请输入正确手机号")
    private String phone;               // 手机号\用户名

    @NotBlank(message = "昵称不能为空")
    @Pattern(regexp = "^.{2,20}$", message = "昵称是2~20个字符")
    private String nickname;            // 昵称

    @NotBlank(message = "密码不能为空")
    @Pattern(regexp = "^\\w{6,20}$", message = "密码必须是6~20个字符")
    private String password;            // 密码
    @NotBlank(message = "确认密码不能为空")
    private String confirm;             // 确认密码

}

控制层

@RestController
public class UserController {

    // 处理注册的方法
    @PostMapping("/register")
    public String register(
            //RegisterVO参数前添加@Validated注解,表示启动SpringValidation验证
            // 在控制器运行之前框架就会按照设置好的规则进行验证工作
            @Validated RegisterVO registerVO,
            // 这个参数是接收上面验证结果的对象
            // 我们在代码中可以判断这个result中是否包含错误信息,以得知验证结果
            BindingResult result) {
        if (result.hasErrors()) {
            // 进入这个if证明验证没通过,要返回错误信息
            String msg = result.getFieldError().getDefaultMessage();
            return msg;
        }
        //业务代码
        return "ok";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值