使用自定义参数注解验证异常报错
在若依代码中我可以发现:存在多处自定义参数的注解,其中有很多地方被用于一个参数异常与否的检验。我们可以试着举例:若依代码中的Xss就是一个自定义注解模块:Xss:负责设置作用域和内置属性。XssValidator:编写校验规则XssValidator类。实例展示:在domain层的entity中负责实体类中使用这个注解。
·
目录
一、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 = "用户昵称不能包含脚本字符")
更多推荐
已为社区贡献10条内容
所有评论(0)