自定义校验

接口:

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;
    }
}

使用:

在属性上面使用注解

相关推荐
艾迪的技术之路几秒前
redisson使用lock导致死锁问题
java·后端·面试
是阿建吖!2 分钟前
【Linux | 网络】网络基础
linux·网络
mmoyula2 分钟前
【RK3568 驱动开发:实现一个最基础的网络设备】
android·linux·驱动开发
今天背单词了吗98018 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
天天摸鱼的java工程师21 分钟前
使用 Spring Boot 整合高德地图实现路线规划功能
java·后端
阿杆23 分钟前
😡同事查日志太慢,我现场教他一套 grep 组合拳!
linux·后端
墨小傲35 分钟前
基于Linux下的vscode c/c++开发环境搭建详细教程
linux·c语言·vscode
东阳马生架构36 分钟前
订单初版—2.生单链路中的技术问题说明文档
java
cui_win41 分钟前
【网络】Linux 内核优化实战 - net.ipv4.tcp_timestamps
linux·网络·tcp/ip
czhc114007566342 分钟前
Linux 77 FTP
linux·运维·服务器