2017-10-11 7 views
0

私のPrimefacesページにデータテーブルとポーリングがあります。すべての行のDatatableには、commanButtonがあります。ポーリングのため、f:setPropertyActionListenerは、ボタンのクリックで正しく動作しません。だから、ボタンでajax = falseを設定し、POSTリクエストを介してdatatable行 "var"を取得しようとしました。それを行う方法はありますか?Primefacesのdatatable行の変数を、非Ajaxボタンのポストリクエストを介して取得する

<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:attributeが私の問題を解決しました。

  <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バージョンのバカストかもしれません。私は代わりの解決策が働いていることを発見し、以下に投稿しました –

関連する問題