Primefaces <p:blockui> hidding growl <p:growl>发布后</p:growl> </p:blockui>

时间:2014-10-17 15:09:36

标签: jsf jsf-2 primefaces blockui

我正在尝试通过单击来自辅助bean的按钮来更新消息,并且在单击按钮后的同时我试图阻止此按钮以避免双击。阻止成功发生并显示消息,但解除阻止消息消失后​​。这很快就会发生。而且我希望咆哮中的信息能够保持更长时间。 我的.jsf片段。

<h:form id="form">
    <p:growl id="messages" />
    <p:blockUI block="button" widgetVar="block"/>
        <p:dataTable var="item" id="table" value="#{bean.lazyModel}"
            lazy="true">
            <p:column>
                <p:commandButton value="#{item.actionBtn}" 
                    update=":form:messages" action="#{bean.action}"
                    oncomplete="filterTableFromPanel();PF('block').hide()"
                    onclick="PF('block').show()">
                </p:commandButton>
            </p:column>
        </p:dataTable> 
</h:form>

一如既往地支持bean。

public void action(){
   FacesContext.getCurrentInstance().addMessage(null, msg);
}

请原谅我可能出现的错误,snipet被裁掉了。

2 个答案:

答案 0 :(得分:2)

您可以选择设置stickylife

  • stickygrowl保持可见,直到用户手动关闭咆哮组件

  • life设置组件的超时时间。此值将确定消息可见的时间长度,然后在life过去后消失。将此值设置为毫秒life="1200"(默认为6000

答案 1 :(得分:0)

我使用p:remoteCommand解决了我的问题。

<h:form id="form">
    <p:growl id="messages" />
    <p:blockUI block="button" widgetVar="block"/>
    <p:remoteCommand name="addMessage"
			action="#{bean.addMessage}"
			update=":form:messages" />
        <p:dataTable var="item" id="table" value="#{bean.lazyModel}"
            lazy="true">
            <p:column>
                <p:commandButton value="#{item.actionBtn}" 
                    update=":form:messages" action="#{bean.action}"
                    oncomplete="filterTableFromPanel();PF('block').hide(); addMessage()"
                    onclick="PF('block').show()">
                </p:commandButton>
            </p:column>
        </p:dataTable> 
</h:form>

在支持bean中我添加了这样的东西:

public void addMessage(){
   FacesContext.getCurrentInstance().addMessage(null, "msg");
}