2010-07-19 70 views
2

我正在使用自定義ajax-調用服務器上的一些處理的javacode。在這個過程中,可能會發生各種錯誤,我通過addMessage()添加到FacesContext。 我想顯示這些消息在相同的<rich:messages> -tag,我使用我的驗證錯誤。ajax請求後重新顯示RichFaces錯誤消息

您知道在ajax請求完成後在<rich:messages> -tag中顯示這些消息的方法嗎?

我最初的想法是將 <a4j:jsFunction name="richDisplayError" reRender="messages" /> 的標記並調用richDisplayError當請求完成,但似乎這些消息面板重新呈現空。

回答

4

<rich:messages>已將ajaxRendered默認設置爲true。所以問題在於別處。也許:

  • 要重定向,而不是轉發,郵件丟失
  • 你實際上並沒有添加消息(與調試檢查)
  • 你有不同的/缺少的意見/子視圖
+0

,但與自定義函數。這就是消息存在多久的原因?當我再打另一個電話時他們會失去嗎? – 2010-07-20 14:33:06

+0

' Bozho 2010-07-20 17:29:00

2

例如,在你的頁面:

<a4j:commandButton value="Action" 
      limitToList="true" 
      action="#{mybean.action}" 
      reRender="mymessages"> 
    </a4j:commandButton> 
    <a4j:outputPanel ajaxRendered="true"> 
     <h:messages id="mymessages" /> 
    </a4j:outputPanel> 

然後在你的bean:

public void action(){       
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("hello world")); 
}  
0

您需要三樣東西:

:宣佈你的錯誤信息,請在 「\資源\包\ errorMessages.properties」 的文件,像這樣:

errorMsgToDisplay.errName = Your Error Message Here 

2nd:在班級代碼中聲明您的BUNDLE變量:

private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("/bundle/errorMessages"); 

第三:顯示我認爲ajaxRendered是在這種情況下沒有用的,因爲我正在經由A4J框架的AJAX調用的消息(例如一個條件之後)

if (condition) { 
FacesContext.getCurrentInstance().addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, 
BUNDLE.getString("errorMsgToDisplay.errName"), 
BUNDLE.getString("errorMsgToDisplay.errName"))); 
}