我需要你的幫助來更好地理解這一點。這是我的情況。我爲表單中的每個輸入控件都有一個自定義驗證器。所以當有任何驗證錯誤時,我會在validate方法中添加一個相應的FacesMessage。我的理解是,當有任何驗證錯誤 - 或者在Custom Validator的validate方法中添加了FacesMessage時,它將跳過INVOKE APPLICATION階段並直接調用RENDER RESPONSE PHASE - 顯示已添加的FacesMessage過程驗證階段 - 這是正確的嗎?在驗證錯誤期間添加面孔消息時,JSF是否會跳過調用應用程序階段?
我面臨的問題是 - 我在過程驗證階段添加了一個FacesMessage - 由於驗證錯誤 - 我添加了用戶在INVOKE應用階段採取的操作的確認消息 - 現在兩者都顯示在RENDER RESPONSE階段的頁面中? - 如果我的理解在上述問題中是正確的 - 在確認Curces FacesContext中沒有FacesMessages之後,是否有條件地添加確認FacesMessage是最佳做法?
這是如何增加消息:
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR,Constants.invalidMessageDetail,null);
FacesContext.getCurrentInstance().addMessage(null, facesMessage);
throw new ValidatorException(facesMessage);
這是它是如何顯示:
<h:messages errorClass="ErrorMsg" warnClass="WarningMsg" infoClass="InfoMsg" layout="table" />
感謝你的幫助。
感謝BalusC。這真的很有幫助。但現在,這些消息在頁面中顯示兩次。我在驗證方法中的sysouts顯示消息只添加一次。任何想法可能是什麼問題? – gekrish 2010-06-01 11:54:33
也許是因爲你指示了觀點兩次展示它?即你有兩個'h:messages'元素。根據迄今爲止提供的信息很難說清楚。 – BalusC 2010-06-01 12:03:11
我已添加如何添加以及如何顯示的代碼。你能檢查嗎? – gekrish 2010-06-01 12:10:06