2010-07-19 73 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"))); 
}