java 检验传入控制器对象属性的注解

Java Bean Validation 提供了许多有用的注解来验证字段的有效性。以下是一些常用的验证注解:

1. @NotNull

  • 目的:确保被注解的字段不为 null
  • 适用对象:可以用于任何类型的对象,包括字符串、集合、数字等。
  • 注意:如果字段的值是空字符串(""),该注解不会触发验证失败。
@NotNull(message = "Name cannot be null")
private String name;

2. @NotEmpty

  • 目的:确保被注解的字段不为 null 且字符串或集合不为空。
  • 适用对象:通常用于 String 类型、集合(如 ListSet)等。
  • 注意:如果字段的值是 null 或空字符串(""),会触发验证失败。
@NotEmpty(message = "Email cannot be empty")
private String email;

3.@NotBlank

  • 目的:确保字符串不为 null、空字符串("")或仅包含空格。
  • 适用对象:仅适用于 String 类型。
  • 目的:确保字符串不为 null、空字符串("")或仅包含空格。
  • 适用对象:仅适用于 String 类型。
@NotBlank(message = "Name cannot be blank")
private String name;

4.@Size

  • 目的:验证字符串、集合、数组的大小。
  • 适用对象String、集合、数组等。
  • 参数minmax 指定大小范围。
@Size(min = 1, max = 50, message = "Name must be between 1 and 50 characters")
private String name;

5.@Email

  • 目的:验证字符串是否符合电子邮件格式。
  • 适用对象:仅适用于 String 类型。
@Email(message = "Email should be valid")
private String email;

6.@Min@Max

  • 目的:验证数值的最小值和最大值。
  • 适用对象intIntegerlongLongBigDecimal 等。
@Min(value = 0, message = "Age must be at least 0")
private int age;

@Max(value = 120, message = "Age must be less than or equal to 120")
private int age;

7.@Pattern

  • 目的:验证字符串是否匹配给定的正则表达式。
  • 适用对象:仅适用于 String 类型。
@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "Username can only contain alphanumeric characters")
private String username;

8.@Future@Past

  • 目的:验证日期字段是否在未来或过去。
  • 适用对象java.util.Datejava.time 包中的类
  • @Future(message = "Date must be in the future")
    private LocalDate appointmentDate;
    
    @Past(message = "Date must be in the past")
    private LocalDate birthDate;
    

    9.处理验证错误(异常处理)

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

import java.util.HashMap;
import java.util.Map;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) {
        Map<String, String> errors = new HashMap<>();
        ex.getBindingResult().getFieldErrors().forEach(error -> {
            errors.put(error.getField(), error.getDefaultMessage());
        });
        return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
    }
}

也有注解@RestControllerAdvice 也是相同的作用,可以具体看看这两个注解。ResponseEntity<Map<String, String>> 这是一个返回值类型,可以自定义一个返回类型用来进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值