2012-02-12 80 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,它允許注入。