当用户点击菜单时,我正在更新我的数据表。所以我想显示一些加载图像,而ajax获取数据并更新我的数据表。我为此目的使用p:blockUI。 我的菜单是:
<h:form id="leftMenu">
<p:menu id="privilegeItem">
<p:menuitem id="objectItem"
actionListener="#{selectSignMethodView.changeSignMethods('object')}"
value="Object Signing Services"
update=":signMethodForm:signMethodTable"/>
<p:menuitem id="mobileItem"
actionListener="#{selectSignMethodView.changeSignMethods('mobile')}"
value="Mobile Signing Services"
update=":signMethodForm:signMethodTable"/>
<p:menuitem id="macItem"
actionListener="#{selectSignMethodView.changeSignMethods('mac')}"
value="Mac Signing Services"
update=":signMethodForm:signMethodTable"/>
<p:menuitem id="solarisItem"
actionListener="#{selectSignMethodView.changeSignMethods('solaris')}"
value="solaris Signing Services"
update=":signMethodForm:signMethodTable"/>
</p:menu>
</h:form>
我的数据表是这样的:
<h:form prependId="false" id="signMethodForm">
<p:dataTable id="signMethodTable"
value="#{selectSignMethodView.signMethodList}"
var="signMethods">
<p:column>
<h:outputText value="${signMethods.name}"/>
</p:column>
<p:column>
<h:outputText value="#{signMethods.fileTypes}" />
</p:column>
<p:column>
<h:outputText value="#{signMethods.servers}"/>
</p:column>
</p:dataTable>
<p:blockUI trigger=":leftMenu:privilegeItem" block="signMethodTable">
LOADING<br />
<p:graphicImage library="images" name="ajax-loader.gif"/>
</p:blockUI>
</h:form>
但是blockUI没有阻止我的数据表。我的触发属性有问题。
答案 0 :(得分:6)
对于Primefaces 5.0,请尝试使用
<p:menuitem id="objectItem"
actionListener="#{selectSignMethodView.changeSignMethods('object')}"
value="Object Signing Services"
update=":signMethodForm:signMethodTable"
onclick="PF('block').show()"
oncomplete="PF('block').hide()"/>
,并将widgetVar添加到
<p:blockUI block="signMethodTable" widgetVar="block">
LOADING<br />
<p:graphicImage library="images" name="ajax-loader.gif"/>
</p:blockUI>
它对我有用。