使用自定义参数注解验证异常报错

目录

一、Valid依赖引入:

​ 二、例子展现:


一、Valid依赖引入:

 二、例子展现:

在若依代码中我可以发现:存在多处自定义参数的注解,其中有很多地方被用于一个参数异常与否的检验。我们可以试着举例:

若依代码中的Xss就是一个自定义注解模块:

Xss:负责设置作用域和内置属性。

@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER })
@Constraint(validatedBy = { XssValidator.class })
public @interface Xss
{
    String message()

    default "不允许任何脚本运行";

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

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

XssValidator:编写校验规则XssValidator类。

public class XssValidator implements ConstraintValidator<Xss, String>
{
    private static final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />";

    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext)
    {
        if (StringUtils.isBlank(value))
        {
            return true;
        }
        return !containsHtml(value);
    }

    public static boolean containsHtml(String value)
    {
        Pattern pattern = Pattern.compile(HTML_PATTERN);
        Matcher matcher = pattern.matcher(value);
        return matcher.matches();
    }
}

实例展示:在domain层的entity中负责实体类中使用这个注解。

@Xss(message = "用户昵称不能包含脚本字符")

猜你喜欢

转载自blog.csdn.net/qq_53480941/article/details/127437818
今日推荐