2012-02-01 64 views
0

我想通過使用自定義驗證器來動態驗證值,我可以使用多個組件。自定義驗證程序根據其使用情況從不同的ManagedBeans中獲取這些值。動態獲取自定義JSF驗證器中的ManagedBeans

如何確定從哪個ManagedBean中檢索值?所以我可以得到它,驗證它,並把它放回ManagedBean。

我的自定義驗證:

@FacesValidator(value = "valid") 
public class DateValidator implements Validator { 

    @Override 
    public void validate(FacesContext context, UIComponent component, 
      Object value) throws ValidatorException { 
     // Bean bean = ? 
    } 
} 
+0

對於Validator來說,這是一個非常奇怪的用例。你不*實際*需要一個'轉換器'? 「驗證器」不應該操縱/轉換數據,而只是檢查/驗證數據並將其解開。 – BalusC 2012-02-01 12:05:30

+0

我很抱歉的描述。我不會操縱驗證器中的數據。我只想獲得ManagedBean,其中稍後將提交組件的提交的值將被保存,因爲在此Bean中有一些我需要驗證的數據。 – buderu 2012-02-01 14:48:54

回答

0

我不認爲這是一個好方法,因爲在驗證階段的模型仍然沒有更新,什麼你得到與查看剛剛輸入值。我想知道爲什麼你需要bean實例。如果您的驗證取決於其他組件,請參閱link @ SOValidator for multiple fields

正如你提到你需要驗證它,並放回原位,這就是爲什麼驗證階段是一回事,在您的驗證驗證它,如果它失敗,將不會被傳遞到託管bean。

看一看這個鏈接,JSF生命週期JSF Lifecycle

希望這有助於!