SpringBoot 请求参数校验

一.SpringBoot 使用validation数据校验之分组校验怎么玩?·分组还有这么多讲究 - 第408篇 - 知乎

二.自定义注解枚举校验

1.aop注解


@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validateBy = {EnumValueValidator.class})
public @interface EnumValue {

//默认错误消息
String message() default "必须为指定值";

String[] strValues() default {};

int[] intValues() default {};

//分组
Class<?>[] group() default {};

//负载
Class<? extends PayLoad>[] payload() default {};

//指定对多个时使用
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List{
    EnumValue[] value();
}
}

2.注解处理类

public class EnumValueValidator implemetns ConstraintValidator<EnumVale, Object>{

  private String[] strValue;
  private int[] intValues;
  
  @Override
  public void initialize(EnumValue constraintAnnotation) {
      strValue = constraintAnnotation.strValues();
      intValues = constraintAnnotation.intValues();
  }


  public boolean isValid(Object value, ConstraintValidatorContext context) {
      if (value instanceof String) {
          for (String s : strValue) {
               if (s.equals(value)) {
                   return true;
                }
           }
       }
       else if (value instanceof Integer) {
          for (String s : strValue) {
               if (s == value) {
                   return true;
                }
           }
       }
       return false;
  }
}

3.注解使用

public class request {
  
   @EnumValue(intValues = {1,2,3,4}, message = "必须是指定值", group = {ValidGroup.Add.class})
   private Integer modelTypeId;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值