在ajax请求后重新呈现RichFaces错误消息

时间:2010-07-19 12:17:24

标签: java ajax jsf richfaces

我正在使用自定义的ajax-called javacode,它在服务器上进行一些处理。在此过程中,我可以通过FacesContextaddMessage()添加各种错误。 我想在我用于验证错误的<rich:messages>标记中显示这些消息。

您知道在ajax请求完成后在<rich:messages> - 标记中显示这些消息的方法吗?

我最初的想法是添加 <a4j:jsFunction name="richDisplayError" reRender="messages" /> 到标记并在请求完成时调用richDisplayError,但似乎消息面板被重新呈现为空。

3 个答案:

答案 0 :(得分:4)

<rich:messages>默认情况下ajaxRendered设置为true。所以问题出在其他地方。也许:

  • 您正在重定向,而不是转发,并且消息丢失
  • 您实际上并未添加消息(请参阅调试)
  • 您有不同/缺乏观点/子视图

答案 1 :(得分: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")); 
}    

答案 2 :(得分:0)

您需要3件事:

第一:在&#34; \ resources \ bundle \ errorMessages.properties&#34;中声明您的错误消息。文件,像这样:

errorMsgToDisplay.errName = Your Error Message Here

2nd :在类代码中声明您的BUNDLE变量:

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

第3次:显示消息(例如在条件之后)

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