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