2016-07-04 7 views
0

У меня есть commandButton, который открывает диалоговое окно, содержащее таблицу.атрибут update commandButton не работает

Когда кнопка нажата, открывается диалоговое окно, но оно ничего не содержит.

Это мой код:

<h:panelGroup id="correctionsEntries" layout="block"> 

    <p:dataTable styleClass="dataTable" id="entriesTable" var="entry" value="#{bean.tableModel.items}"> 

     <p:columnGroup type="header"> 
      <p:row> 
       <ui:repeat var="column" value="#{bean.tableModel.columns}" varStatus="colStatus"> 
        <p:column headerText="#{column.header}"> 
        </p:column> 
       </ui:repeat> 
      </p:row> 
     </p:columnGroup> 

     <c:forEach var="column" items="#{bean.tableModel.columns}"> 

      <c:choose> 
       <c:when test="${column.header eq 'Upload'}"> 
        <p:column> 
         <p:commandButton value="Upload" immediate="true" actionListener="#{bean.setSelectedRow(entry)}" oncomplete="PF('upload').show();" /> 

         <p:dialog header="Upload" widgetVar="upload" height="10%" width="80%"> 
          <p:messages binding="#{bean.component}" /> 
          <p:fileUpload fileUploadListener="#{bean.uploadCSV}" /> 
         </p:dialog> 
        </p:column> 
       </c:when> 

       <c:when test="${column.header eq 'Export'}"> 
        <p:column> 
         <p:commandButton value="Download" immediate="true" ajax="false" actionListener="#{bean.setSelectedRow(entry)}"> 
          <p:fileDownload value="#{bean.downloadCSV()}" /> 
         </p:commandButton> 
        </p:column> 
       </c:when> 

       <c:when test="${column.header eq 'Display'}"> 
        <p:column> 
         <p:commandButton id="displayButton" value="Display" 
          immediate="true" 
          action="#{tableBean.execute(entry)}" 
          update="displayTable" 
          oncomplete="PF('dialog').show();" /> 

         <p:dialog id="dialog" header="Current data" widgetVar="dialog" height="80%" width="80%"> 

          <p:dataTable styleClass="dataTable" 
           id="displayTable" var="tableDataVar" 
           value="#{tableBean.tableModel.data}" 
           tableStyle="width:auto;" resizableColumns="true"> 

           <p:columns var="tableHeader" value="#{tableBean.tableModel.headers}"> 
            <f:facet name="header"> 
             <h:outputText value="#{tableHeader}" /> 
            </f:facet> 
            <h:outputText value="#{tableDataVar[tableHeader]}" /> 

           </p:columns> 

          </p:dataTable> 

         </p:dialog> 
        </p:column> 
       </c:when> 

       <c:when test="${column.header eq 'Test'}"> 
        <p:column> 
         <p:commandButton value="Test" immediate="true" ajax="false" actionListener="#{bean.setSelectedRow(entry)}"> 
          <p:fileDownload value="#{bean.testFilesDownload()}" /> 
         </p:commandButton> 
        </p:column> 
       </c:when> 

       <c:otherwise> 
        <p:column> 
         <h:outputText value="#{bean.tableModel.get(entry, column)}" /> 
        </p:column> 
       </c:otherwise> 
      </c:choose> 
     </c:forEach> 

    </p:dataTable> 

</h:panelGroup> 

В таблице отображается только после обновления страницы.

+0

Просьба показать код диалога – Franky

+0

Диалоговый код находится прямо там (второй тег). –

+0

проверить на ошибки js в консоль браузера или ошибки базы данных bean в консоли eclipse – Franky

ответ

0

Проблема заключается в том, что для каждой колонки из родительской таблицы создается диалоговое окно, содержащее таблицу.

Поэтому существует так много диалогов, что есть столбцы.

Исправить это было добавление диалога в отдельной форме и обращение к нему в commandButton путем указания его пути.

+0

, тогда примите ваш собственный правильный ответ – Franky

+0

Мне пришлось ждать 21 ч, пока не смогу –

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