2011-04-27 46 views
1

拋出的FacesMessage在JSF的自定義轉換器和驗證器,你可以說:JSF從普通豆方法

FacesMessage message = new FacesMessage(
    FacesMessage.SEVERITY_ERROR, "Invalid length!", 
    "Length = 8"); 
throw new ConverterException(message); 

和TI將消息發送給一些H:從轉換器或驗證器確定消息組件。有沒有辦法在普通的bean方法中做這樣的事情(如果是這樣,如何確定h:消息組件將會呈現消息)還是更好的方法是在自定義驗證器中執行所有驗證工作並離開業務沒有檢查bean方法的邏輯。

回答

5

當然,有時你不僅可以依賴驗證器,而且需要在bean中進行驗證。 (大多數時候,你需要這種驗證,當您要驗證多個輸入在一起的數據)

對於這種情況,如果你有在頁面上h:messages控制,這將顯示出現錯誤:

FacesContext.getCurrentInstance().addMessage(null, 
         new FacesMessage("This username already exists!")); 

如果要顯示每個組件的驗證消息,而不是每頁使用通用消息,請參閱this答案。

ps:請注意,如果您使用h:messages,它也會顯示其他組件驗證消息。如果你不想要這套globalOnly="true"