0

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

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

现在 JSF 有以下代码:

<h:messages globalOnly="true"/>

但是上面的方法不起作用,因为 JSF 页面没有重新呈现。请注意,如果我用以下代码替换 JSF 代码,我可以使用 primefaces 完成上述工作:

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

但是我不想使用 primefaces,我想要一个纯 JSF 解决方案。另请注意,我不希望 h:messages 出现在表单中,因为没有可单击的按钮,我希望 h:messages 从 EJB 自动更新,但不使用 primefaces。

4

1 回答 1

3

你必须渲染<h:messages />它不会显示的else。您可以通过呈现来自 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 来呈现。

于 2013-10-23T10:59:26.703 回答