java - 当由组合约束 @NotBlank 注释时,自定义验证器不起作用(完全)
问题描述
我有一个这样的自定义验证器:
@Retention(RetentionPolicy.RUNTIME)
@NotBlank(message = "{state.NotBlank}") // Err...it doesn't work
@Constraint(validatedBy = { State.Validator.class })
public @interface State {
String message() default "{state.invalid}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
@Component
final class Validator implements ConstraintValidator<State, String> {
@Override
public void initialize(final State constraintAnnotation) { }
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// return true or false based on some rules
}
}
}
但是我无法让它与注释State
一起工作@NotBlank
——因为后者没有ElementType.TYPE
in @Target
),而是用 . 注释字段本身@NotBlank
。
我想要它的原因State
是因为我必须对几个字段重复相同的约束,所以如果State
可以用注释@NotBlank
将是完美的。
有什么线索吗?
解决方案
你不能。您将需要定义一个新注释,因为 @NotBlank 具有以下目标:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
如您所见,您不能将其应用于您的完整界面。
推荐阅读
- python - 将索引为数组的 3d numpy 数组切片并重塑
- python - 使用 AWS Lambda 从 HTML 创建 PDF 并使用 Python 使用 S3 存储桶中的 imgs
- python - 尽管尺寸正确,但 Numpy 不会乘以矩阵
- c# - 已部署的 ASP.NET Core MVC 应用程序的运行时错误;在 VS '19 中调试期间不会发生
- node.js - Express:4.17:将变量传递给下一个函数返回未定义(中间件)
- mysql - 获取第二列中所有行的总和到第三列
- url - 如何将此按钮链接到 URL?引导程序 4
- c++ - operator[] 调用者的站点源位置当前解决方法
- javascript - 将活动类添加到此 #a1:hover ~ #b1
- python - 区分具有相同字段的 Pydantic 模型