JSF h:messages 渲染全局消息未重新渲染
Posted
技术标签:
【中文标题】JSF h:messages 渲染全局消息未重新渲染【英文标题】:JSF h:messages render global message is not rerendered 【发布时间】:2013-11-01 12:27:25 【问题描述】:我正在尝试显示从 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。
【问题讨论】:
我是“一个”著名的莎拉.. 但不是你可能的意思:P 以防万一,您还可以使用<x:commandButton>
和AJAX
来更新不包含autoupdate="true"
的<x:message>
【参考方案1】:
您必须渲染 <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。
【讨论】:
以上是关于JSF h:messages 渲染全局消息未重新渲染的主要内容,如果未能解决你的问题,请参考以下文章
3DsMAX2016+vr4.1我最近渲染经常出现渲到building embree dynamic geometry tree的时候就直接渲染完成了?