2017-10-11 59 views
0

我在我的Primefaces頁面中有一個數據表和輪詢。在每行的Datatable上都有一個commanButton。由於輪詢,f:setPropertyActionListener在按鈕單擊時無法正常工作。所以我在button上設置了ajax = false,並試圖通過POST請求獲取數據行「var」。有沒有辦法做到這一點?通過非ajax按鈕發佈請求獲取Primefaces數據錶行變量

<p:poll interval="15" 
     listener="#{batchOperation.generateImportFTDBatchFileReport}" 
     update=":batchOperationsForm:growl :batchOperationsForm:batchfilestbl    
       :batchOperationsForm:dataimporttypeselectiontabview:importFTDbatchfilestbl 
       :batchOperationsForm:dataimporttypeselectiontabview:importFTDerrorbatchfilestbl 
       :batchOperationsForm:dataimporttypeselectiontabview:importFTDStatusTxtId" 
     widgetVar="myPoll" autoStart="true"/> 

<p:dataTable id="batchfilestbl" var="batchFile" 
        value="#{batchOperation.batchFileModel}" paginator="true" 
        rows="#{batchOperation.batchFileModel.pageSize}" 
        paginatorPosition="bottom" 
        sortBy="#{batchOperation.createTime}" 
        sortOrder="descending" 
        emptyMessage="#{messages['common.datatable.emptymessage']}" 
        selectionMode="single" 
        selection="#{batchOperation.selectedFile}"> 


    <p:column headerText="#{messages['content.batchoperations.datatable.header']}"> 

      <p:commandButton actionListener="#{batchOperation.createBatchFileForDownloadLatestRevision}" 
         id="excelCreate" disabled="#{disableExcelVar}" 
         value="#{messages['content.batchoperations.createexcel.button.label']}" 
         ajax="false"> 
         <f:setPropertyActionListener value="#{batchFile}" 
          target="#{batchOperation.selectedFile}" /> 
      </p:commandButton> 
    </p:column> 
</p:dataTable> 

回答

0

而不是使用f:setPropertyActionListener,f:屬性解決了我的問題。

  <p:commandButton actionListener="#{batchOperation.createBatchFileForDownloadLatestRevision}" 
          id="excelCreate" disabled="#{disableExcelVar}" 
          value="#{messages['content.batchoperations.createexcel.button.label']}" 
          ajax="false"> 
       <f:attribute name="bf" value="#{batchFile}" /> 
     </p:commandButton> 

方法:

 public synchronized void createBatchFileForDownloadLatestRevision(ActionEvent event) throws Exception { 

      selectedFile = (BatchFile) ((CommandButton) event.getSource()).getAttributes().get("bf"); 

      . 
      . 
     } 
0

如果您想發送整個模型對象作爲參數到後臺bean的方法,您可以使用您的var爲數據表發送。

<p:dataTable var="myVar"> 
    <p:column> 
     <p:commandButton actionListener="#{bean.method(myVar)}" /> 
    </p:column> 
</p:dataTable> 

另外,如果你只對行索引有興趣,你可以只是使用數據表中rowIndexVar值發送。

<p:dataTable rowIndexVar="rowIndex"> 
    <p:column> 
     <p:commandButton actionListener="#{bean.method(rowIndex)}" /> 
    </p:column> 
</p:dataTable> 

它看起來像你試圖在這裏做文件下載。您可能想要結賬this的問題。

+0

感謝的建議,米切爾。不幸的是,它不適合我,也許因爲JSF/Primefaces版本。我找到了一個替代解決方案,並在下面發佈。 –

相關問題