JSF h:消息呈现全局消息未被重新呈现

时间:2013-10-23 09:38:43

标签: jsf java-ee jsf-2 java-ee-7

我正在尝试显示从EJB发送的全局错误消息:

FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR,
                            "Please select a path first", "title"));

现在JSF有以下代码:

<h:messages globalOnly="true"/>

但上述方法不起作用,因为JSF页面未被重新呈现。 注意我可以使用primefaces进行上述工作,如果我用以下代码替换JSF代码:

<p:messages globalOnly="true" showDetail="true" autoUpdate="true" closable="true" />

但是我不想使用primefaces,我想要一个纯粹的JSF解决方案。 另请注意,我不希望h:消息位于表单内部,因为没有可以单击的按钮,我希望从EJB自动更新h:消息,但不使用primefaces。

1 个答案:

答案 0 :(得分:2)

你必须呈现它不会显示的<h:messages />。 您可以通过从managedbean呈现消息来实现此目的。

<h:messages id="globalMessage" />

在您的managedBean中,您可以放置​​代码以在

之后呈现消息
FacesContext.getCurrentInstance().addMessage(
                null,
                new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Please select a path first", "title"));

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds()
.add("globalMessage");

但请确保您拥有正确的ID。