2014-09-10 2 views
2

Я обновляю свои данные, когда пользователь нажимает на меню. Поэтому я хочу показать некоторый загружаемый образ, пока ajax извлекает данные и обновляет мои данные. Для этой цели я использую p: blockUI. Мое меню:Primefaces 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> 

И мой DataTable, как это:

<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 не блокирует мою DataTable. Что-то не так с моим атрибутом триггера.

ответ

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> 

это работает для меня.

Смежные вопросы