java - JSR 303 验证 : Pass in an Object/Context Information at runtime?

标签 java validation bean-validation hibernate-validator

我在 bean 中有一个字符串 ID 列表,我喜欢根据字符串 id 的“引用列表”进行验证:

@MyIdListValidator  
private List<String> idsFromHtmlForm;  //These need to be validate against an ID list from DB

因此,我必须以某种方式注入(inject)包含所有有效值的“引用列表”,以便在朗姆酒时间进行检查。 (这些引用 ID 在运行时从数据库读取/生成)。这是一个 Web 应用程序(Struts),我真的很想知道为什么这似乎不可能,但却是数百万个 Web 应用程序中普遍存在的用例。你如何解决这个问题?

是否有某种方法可以将任意信息(上下文对象)注入(inject) validator.validate(form);方法?

有没有一种简单的方法可以访问在此方法中验证的整个(!!)对象:

public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext)ConstraintValidator<Date,String>,

注意:我的问题与类级别验证无关,而是与属性级别验证有关,如果有技巧可以访问整个对象(属性所属),而不仅仅是属性本身的值。 (如果我可以访问正在验证的整个实例/类,我可以将其中的数据设置为辅助属性,这很困惑,但将是一个解决方案)。

非常感谢

最佳答案

使用 Bean 验证这是不可能的。只有类级别约束才能访问验证根。属性级别约束只能访问经过验证的值。这在 Bean Validation 1.1 中可能会发生变化。

您可以编写允许注入(inject)的自定义 ConstraintValiatorFactory。

关于java - JSR 303 验证 : Pass in an Object/Context Information at runtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251671/

相关文章:

java - 序列化 java.lang.class

Java - 使用 JSch 通过 ssh 隧道连接到 mysql 数据库

java - 如何解决 JSR-303 自定义 validator 中的依赖关系

ruby-on-rails - 错误.full_messages : attribute name appears twice

java - spring boot 中的自定义 jpa 验证

Java ConstraintValidator 用途

java - 如何使用 Jar 文件在 IntelliJ IDEA 中设置运行/调试配置?

java - 将数据写入字符串

java - 为什么我的应用程序中的电子邮件验证总是出错?

PHP MySQL 插入文件,使用带有 OR 运算符的 IF 语句验证表单