自定义校验

接口:

java 复制代码
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {CannotBlankValidation.class})
public interface CannotBlank{
    //默认错误信息
    String message() default "不能包含空格";

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

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

    @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface List {
        CannotBlank[] value();
    }
}

实现类:

java 复制代码
public class CannotBlankValidation implements ConstraintValidator<CannotBlank,String> {
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value != null && value.contains(" ")){
            //获取默认提示信息
            String defaultConstraintMessageTemplate = context.getDefaultConstraintMessageTemplate();
            System.out.println("default message : " + defaultConstraintMessageTemplate);

            //禁用默认提示信息
            context.disableDefaultConstraintViolation();

            //设置提示语
            context.buildConstraintViolationWithTemplate("can not contains blank").addConstraintViolation();

            return false;
        }
        return false;
    }
}

使用:

在属性上面使用注解

相关推荐
舞动青春888 分钟前
Ubuntu安装QEMU过程及问题记录
linux·学习·ubuntu
知识分享小能手13 分钟前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04的基本配置 (3)
linux·学习·ubuntu
Joren的学习记录28 分钟前
【Linux运维大神系列】Docker详解(二)
linux·运维·docker
郑州光合科技余经理33 分钟前
实战:攻克海外版同城生活服务平台开发五大挑战
java·开发语言·javascript·数据库·git·php·生活
蟹至之34 分钟前
【MySQL】JDBC的使用(万字解析)
java·数据库·mysql·jdbc
爱笑的眼睛1135 分钟前
超越翻转与裁剪:面向生产级AI的数据增强深度实践与多模态演进
java·人工智能·python·ai
Crkylin35 分钟前
尚硅谷Linux应用层学习笔记(一)GCC编译
linux·笔记·学习
长孙阮柯36 分钟前
Java进阶篇(五)
java·开发语言
小张快跑。1 小时前
Maven指定版本下载以及相关配置
java·maven
zhishidi1 小时前
Spring @Scheduled注解调度机制详解
java·python·spring