2012-02-12 82 views
0

我有串的ID在一个bean的名单,我喜欢来验证字符串ID的“业绩表”:JSR303验证:在运行时传入对象/上下文信息?

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

所以我要somewho所有有效的值注入“参考目录”在rumtime检查。 (这些引用ID在运行时从数据库读取/生成)。这是一个web应用程序(Struts),我真的好奇为什么这似乎是不可能的,但是这是一个在万维网应用程序中普遍使用的用例。你如何解决这个问题?

是否有某种方式要么注入任意信息(上下文对象)到

validator.validate(form); 

方法?

,并有一个简单的方法来获得访问整个(!!)对象这种方法被验证:

ConstraintValidator<Date,String>,

public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext):我的问题是没有关系的类级验证,但如果有一个技巧可以访问整个对象(属性属性),那么属性级验证不仅仅是一个propety本身的价值。 (如果我可以访问整个实例/类进行验证,我可以将数据设置为辅助属性,但其混乱,但将是一个解决方案)。

非常感谢

回答

2

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

你可以编写自定义ConstraintValiatorFactory,它允许注入。