java如何使用注解自定义参数约束器控制字节长度

自定义参数类常常需要对每个参数进行字节长度的约束

1.首先,自定义注解:

@Documented
@Constraint(validatedBy = ByteSizeValidator.class)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@ReportAsSingleViolation
@NotNull
public @interface ByteSize {

    String message() default "数据字节长度不合法";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    int min() default 0;

    int max() default Integer.MAX_VALUE;

}

2.编写字节约束的实现类:

public class ByteSizeValidator implements ConstraintValidator<ByteSize, String> {
    private int min;
    private int max;

    @Override
    public void initialize(ByteSize constraintAnnotation) {
        min = constraintAnnotation.min();
        max = constraintAnnotation.max();
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null) {
            return true;
        }

        int byteCount = value.getBytes(CharsetKit.CHARSET_UTF_8).length;
        return byteCount >= min && byteCount <= max;
    }
}

3.在参数实体类中使用注解:

@Data
public class StudentVo {
    /**
     * 学校编码
     */
    @NotBlank(message = "学校编码不可为空")
    @ByteSize(max = 50, message = "学校编码最大字节长度为50")
    private String studentcode;
}

就这样简简单单就完成自定义注解方式控制入参的的字节长度;

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值