Primefaces BlockUI无法正常工作

时间:2014-09-10 07:24:27

标签: jsf jsf-2 primefaces

当用户点击菜单时,我正在更新我的数据表。所以我想显示一些加载图像,而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没有阻止我的数据表。我的触发属性有问题。

1 个答案:

答案 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>

它对我有用。