【问题标题】:display growl when page is loaded primefaces jsf2加载页面时显示咆哮primefaces jsf2
【发布时间】:2013-05-14 18:45:53
【问题描述】:

我有这个命令按钮:

    <p:commandButton value="Enregistrer" action="#{reglementClientMB.ajouter}" 
            process="@this @form" update="@form" >
            <f:setPropertyActionListener target="#{reglementClientMB.est_ajouter}" value="false" />
            </p:commandButton>

动作方法返回另一个页面,我想在下一页加载时显示一个p:growl

我测试了把它作为托管bean的构造函数,但是咆哮显示在页面中的数据下方

FacesContext.getCurrentInstance().addMessage(
                        null,
                        new FacesMessage(FacesMessage.SEVERITY_INFO, ""
                                + "Confirmation", "Réglement crée avec sucée"));

                RequestContext.getCurrentInstance().update("messages");

我怎样才能做到这一点

提前谢谢你

【问题讨论】:

    标签: jsf-2 primefaces load growl


    【解决方案1】:

    如果 &lt;p:growl&gt; 在第一次构造 bean 之前呈现,则 bean 的构造函数可能为时已晚。例如

    <p:growl />
    ...
    <h:outputText value="#{bean.something}" />
    

    只有在 &lt;p:growl&gt; 被渲染之前构建 bean 才有效。

    <h:outputText value="#{bean.something}" />
    ...
    <p:growl />
    

    为了解决您的具体问题,您需要改为在预渲染视图侦听器中完成这项工作。

    <f:event type="preRenderView" listener="#{bean.init}" />
    

    与:

    public void init() {
        // Add the desired message here.
    }
    

    【讨论】:

    • 我通过将消息/咆哮放在模板代码的末尾解决了这个问题。这是一种好的/可接受的做法吗?还是我会遇到问题?
    • @Jenson:正如回答的那样,您需要确保在呈现目标消息组件之前添加消息。您选择哪种方式取决于您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多