2016-07-20 4 views
0

Я хотел бы скрыть элемент, пока кнопка срабатывает действие выполняется:p: blockUI/pe: blockUI: Почему он не работает на моем простом примере?

<h:form id="sendtxform"> 
     <p:panelGrid columns="1" styleClass="ui-noborder">  
      <pe:blockUI block="input" widgetVar="blockUIWidget"> 
      LOADING<br /> 
       <p:graphicImage name="images/ajax-loader.gif" /> 
      </pe:blockUI> 

      <p:commandButton id="command" value="ISSUE APP" 
       actionListener="#{transactionXmlController.getTxDataPredefined}" 
       ajax="true" update="growl,input" 
       onstart="PF('blockUIWidget').block();" 
       oncomplete="PF('blockUIWidget').unblock();"> 
      </p:commandButton> 

      <p:inputTextarea id="input" cols="150" rows="30" autoResize="false" 
       value="#{transactionXmlEditableModel.xml}" /> 
     </p:panelGrid> 
    </h:form> 

Я попытался с р: blockUI/ре: blockUI и с/без OnStart и OnComplete атрибутов.

Что я делаю неправильно? Я использую blockUI где-то еще, и он работает нормально: Единственное отличие состоит в том, что таблица является его собственным триггером.

Я следовал this учебник.

+0

panelgrid вы имеете в виду? Вы пытались поместить его за панель PanelGrid и посмотреть, сможете ли вы его запустить? И какую версию вы используете? – Kukeltje

+0

Я хотел заблокировать inputTextArea, но сетка тоже прекрасна. Но это не работает. Я сделал то, что вы предложили. Как и прежде, ничего не происходит. Я использую Primefaces Version 6 – Tim

+1

Я думаю, что вы смешиваете p: blockUI и pe: blockUI. В компоненте расширения поверхностей нет атрибута блока, вместо этого используется цель – SiMag

ответ

1

Блокировать вход кажется неработоспособным, вы можете обернуть его с помощью панели и заблокировать ее.

PrimeFaces Расширения:

<h:form id="sendtxform"> 
    <p:panelGrid columns="1" styleClass="ui-noborder"> 
     <pe:blockUI target="panel" widgetVar="blockUIWidget"> 
     LOADING<br /> 
      <p:graphicImage name="images/ajax-loader.gif" /> 
     </pe:blockUI> 

     <p:commandButton id="command" value="ISSUE APP" 
      actionListener="#{transactionXmlController.getTxDataPredefined}" 
      ajax="true" update="input" 
      onstart="PF('blockUIWidget').block();" 
      oncomplete="PF('blockUIWidget').unblock();"> 
     </p:commandButton> 

     <p:panel id="panel"> 
      <p:inputTextarea id="input" cols="150" rows="30" autoResize="false" 
      value="#{transactionXmlEditableModel.xml}" /> 
     </p:panel> 
    </p:panelGrid> 
</h:form> 

PrimeFaces:

<h:form id="sendtxform"> 
    <p:panelGrid columns="1" styleClass="ui-noborder"> 
     <p:blockUI block="panel" trigger="command"> 
     LOADING<br /> 
      <p:graphicImage name="images/ajax-loader.gif" /> 
     </p:blockUI> 

     <p:commandButton id="command" value="ISSUE APP" 
      actionListener="#{transactionXmlController.getTxDataPredefined}" 
      ajax="true" update="input"> 
     </p:commandButton> 

     <p:panel id="panel"> 
      <p:inputTextarea id="input" cols="150" rows="30" autoResize="false" 
      value="#{transactionXmlEditableModel.xml}" /> 
     </p:panel> 
    </p:panelGrid> 
</h:form> 
+0

Спасибо, но это не сработает. Используем ли мы разные версии? (2.2 для меня) – Tim

+0

Я только что попробовал, и он работает, я использую jsf 2.2, pf 6 e pfe 6. У вас ошибка в js console? – SiMag

+0

Я видел в вашем коде, что у вас есть атрибут блока. У расширений PF нет этого атрибута, используйте цель. – SiMag