JSF h:messages呈现全局消息不会重新呈现

JSF h:messages呈现全局消息不会重新呈现,jsf,jakarta-ee,jsf-2,java-ee-7,Jsf,Jakarta Ee,Jsf 2,Java Ee 7,我正在尝试显示从EJB发送的全局错误消息,其中包含: FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Please select a path first", "title")); 现在JSF有以下代码: <

我正在尝试显示从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。

您必须渲染
,否则它不会显示。 您可以通过呈现来自managedbean的消息来实现这一点

<h:messages id="globalMessage" />

但请确保您有正确的Id进行渲染。

我是“一个”著名的莎拉。。但这不是您可能的意思:为了以防万一,您还可以使用
AJAX
来更新不包含
autoupdate=“true”的
FacesContext.getCurrentInstance().addMessage(
                null,
                new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Please select a path first", "title"));

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