我试图通过点击backingbean中的按钮来更新消息,同时在点击按钮后,我试图阻止这个按钮以避免双击。阻止成功发生并显示消息,但在取消阻止消息消失之后。这种情况发生得很快。我希望咆哮中的信息停留更长时间。我的.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>
一切如常。
public void action(){
FacesContext.getCurrentInstance().addMessage(null, msg);
}
请原谅我可能犯的错误,狙击手被裁掉了。
您可以选择设置sticky
或life
:
-
sticky
使growl
保持可见,直到用户手动关闭咆哮部件 -
life
来设置组件的超时周期。此值将确定消息可见的时间,然后在life
结束后消息消失。以毫秒为单位设置此值life="1200"
(默认为6000
)
我已经使用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>
在backingbean中,我添加了一些类似的内容:
public void addMessage(){
FacesContext.getCurrentInstance().addMessage(null, "msg");
}