我正在尝试通过单击来自辅助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被裁掉了。
答案 0 :(得分:2)
您可以选择设置sticky
或life
:
sticky
让growl
保持可见,直到用户手动关闭咆哮组件
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");
}