2011-10-13 41 views
3

我有一個應用程序包含Primefaces數據表中的commandLinks。 commandLinks鏈接到應用程序中的其他頁面並傳遞參數。當我嘗試使用Primefaces的ExcelExporter導出dataTable時,生成的.xls文件包含commandLink的value屬性,而不是包含在commandLink中的outputText的value屬性。 dataTable的代碼中帶有CommandLinks的Primefaces ExcelExporter

柱:

<p:dataTable var="dataRow" id="myTable"> 
    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="MyColumn" /> 
     </f:facet> 
     <h:outputLink value="myPage.xhtml"> 
      <f:param name="columnId" value="#{dataRow.columnId}" /> 
      <h:outputText value="#{dataRow.columnName }" /> 
     </h:outputLink> 
    </p:column> 
</p:dataTable> 

ExcelExporter代碼:

<h:commandLink> 
    <h:outputText value="Export" /> 
     <p:dataExporter type="xls" target="myTable" fileName="tableResults"/> 
</h:commandLink> 

當我出口使用ExcelExporter表,導出的數據是 「myPage.xhtml」,當我把它想是「#{dataRow.columnId}」中包含的數據。有沒有一種方法來格式化鏈接,以便將它們與我想要的文本一起導出?

回答

1

我能夠通過改變鏈接到commandLinks來解決這個問題,通過確定導航和setPropertyActionListeners傳遞參數的動作。它看起來像PrimeFaces總是從父組件獲取值,所以這似乎是最好的解決方法。 dataExporter代碼保持不變。

改性XHTML代碼:

<p:dataTable var="dataRow" id="myTable"> 
    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="MyColumn" /> 
     </f:facet> 
     <h:commandLink value="#{dataRow.columnName}" action="myPage"> 
      <f:setPropertyActionListener target="#{myPage.columnId}" 
       value="#{dataRow.columnId}"/> 
     </h:commandLink> 
    </p:column> 
</p:dataTable> 

導航規則添加到faces-config.xml中:

<navigation-rule> 
    <navigation-case> 
     <from-outcome>myPage</from-outcome> 
     <to-view-id>/myPage.xhtml</to-view-id> 
     <redirect /> 
    </navigation-case> 
</navigation-rule> 
相關問題