【问题标题】:How to make Primefaces Growl stack messages?如何制作 Primefaces Growl 堆栈消息?
【发布时间】:2018-11-09 18:56:27
【问题描述】:

CommandButton 显示咆哮。但是之前的咆哮信息丢失了。怎样才能让咆哮显示消息堆栈?

例如:

<h:form> 
    <p:growl id="growl" showDetail="true" life="6000" />  
    <p:commandButton value="Show" actionListener="#{growlView.showMessage}" update="growl" />  
</h:form>

和bean函数:

public void showMessage() {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Hello"));
}

我每秒点击一次按钮。我希望消息将存储和显示 6 秒。 但点击按钮后,上一条消息隐藏,我只看到当前消息。

当我调试时,我有:

FacesContext.getCurrentInstance().getMessageList().size() == 0

我试过了

FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);

<context-param>
    <param-name>org.primefaces.messagePersistence</param-name>
    <param-value>true</param-value>
</context-param>

但是不起作用=(

请帮忙

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    对于那些想要以相同的p:growl 以堆栈方式显示消息而不隐藏先前消息的人来说,使用 primefaces 5.1 的简​​单解决方案是覆盖组件的默认行为,将 primefacesFixes.js 文件添加到类路径并使用下面的注释行覆盖该函数:

    primefacesFixes.js:

    PrimeFaces.widget.Growl.prototype.show = function(b) {
    var a = this;
    this.jq.css("z-index", ++PrimeFaces.zindex);
    //this.removeAll(); //Commenting this line prevents an ajax update tho the <p:growl> from erasing global messages
    $.each(b, function(c, d) {
        a.renderMessage(d);
    });
    

    };

    所以你在你的模板标签上这样调用修复文件:

    <h:outputScript name="javascript/primefacesFixes.js" target="head" />
    

    并且只能在页面上使用一个p:growl 来呈现所有需要的消息。

    【讨论】:

      【解决方案2】:

      很遗憾,目前这是不可能的。实际上,这是 2011 年的默认行为(堆积咆哮消息),但 primefaces 核心团队决定:

      在 ajax 更新显示新消息之前隐藏以前的消息

      来源:https://code.google.com/p/primefaces/issues/detail?id=1925

      但是,here(2014 年 10 月)创建了一个问题以恢复此功能,但尚未审核。

      【讨论】:

        【解决方案3】:

        在一个老问题上发布这个,但这可能是一种解决方案(虽然,我在 PFv6.2 上):

        <p:growl id="messages" showDetail="true" keepAlive="true"/>
        

        只需将keepAlive="true" 添加到咆哮元素即可。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-20
          • 2013-09-15
          • 1970-01-01
          • 2015-04-09
          • 2021-04-29
          • 1970-01-01
          • 2021-06-02
          • 1970-01-01
          相关资源
          最近更新 更多