【问题标题】:JSF h:messages render global message is not rerenderedJSF h:messages 渲染全局消息未重新渲染
【发布时间】: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
  • 以防万一,您还可以使用&lt;x:commandButton&gt;AJAX 来更新不包含autoupdate="true"&lt;x:message&gt;

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


【解决方案1】:

您必须渲染 &lt;h:messages /&gt; 否则它不会显示。 您可以通过呈现来自 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2011-02-06
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多