【问题标题】:DataTable export is not working in Primefaces 4.0数据表导出在 Primefaces 4.0 中不起作用
【发布时间】:2013-10-17 18:32:28
【问题描述】:

我想在 primefaces 4.0 中以 csv、pdf 格式导出数据表。为此,我使用了以下代码:

<p:dataTable var="valuesTable" value="#{userBean.groupResultList}"
    paginator="false" id="valuesTable" resizableColumns="true"
    rendered="#{not empty userBean.groupResultList}">
    <p:column headerText="Group" id="grp">                                                  #{valuesTable.groupName}</p:column>
    <p:column headerText="Technical Knowledge" id="tk">  
                                            #{valuesTable.tkValue}
                            </p:column>
    <p:column headerText="Project Management" id="pm">  
                                                #{valuesTable.pmValue}
                            </p:column>
    <p:column headerText="Growth" id="ga">  
                                                #{valuesTable.gaValue}
                            </p:column>
    <f:facet name="footer">
        <h:commandLink>
            <p:graphicImage value="/images/xml.jpeg" width="20" height="20" />
            <p:dataExporter target="valuesTable" type="xml" fileName="Data_XML" />
        </h:commandLink>
    </f:facet>
</p:dataTable>    

当我运行应用程序时,数据表在每个单元格中显示正确的数据。 但是当我尝试以 csv 或 pdf 格式导出它,而不是导出实际数字(或对象的值)时,它正在导出 "#{valuesTable.groupName}" "#{valuesTable.tkValue}" ,"#{valuesTable. pmValue}" ,"#{valuesTable.gaValue}" 用于 csv 文件中的每个对象。

CSV 文件内容:

#{valuesTable.groupName}    #{valuesTable.tkFormatedValue}  #{valuesTable.pmFormatedValue}  #{valuesTable.gaFormatedValue}

数据表内容:

Group Name  Technical Knowledge   Project Management  Growth

India            .8                       .7            1.0

不知道为什么要这样导出数据表..

请帮忙

谢谢

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    我曾经在使用 dataTable 导出器时遇到过类似的问题。 您必须使用这样的 outputText:

    <h:outputText value="#{valuesTable.tkValue}"/> 
    

    在所有列标签内,以便正确查看值。 您的专栏将变为:

    <p:column headerText="Technical Knowledge" id="tk">  
         <h:outputText value="#{valuesTable.tkValue}"/>
    </p:column>
    

    替换所有列并尝试! 希望对您有所帮助!

    而且我认为标题也不行。您必须像这样使用 f:facet 标记:

    <p:column id="tk">
         <f:facet name="header">  
            <h:outputText value="Technical Knowledge" />  
         </f:facet>  
         <h:outputText value="#{valuesTable.tkValue}"/>
    </p:column>
    

    现在您还应该在导出的 CSV 文件中看到标题。

    【讨论】:

      【解决方案2】:

      DataTable 导出在 Primefaces 4.0 中不起作用

      第 1 步:您需要添加 jar 用于导出 csv 、pdf 文件。 itext-1.1.4.jar

      第 2 步:DataExplorar.xhtml

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
      
      <p:panel header="Generate Report ">
      
      <div>
      <h:commandLink>
          <p:graphicImage value="/images/pdf.png"
              style="width:30px; hight:30px;" />
          <p:dataExporter type="pdf" target="tb1"
              fileName="fileName" />
      </h:commandLink>
      
          <h:commandLink>
      
           <p:graphicImage value="/images/excel.png"
          style="width:25px; hight:30px;" />
        <p:dataExporter type="xls" target="tb1"
          fileName="fileName" />
         </h:commandLink>
      </div>          
      </p:panel>
      

      【讨论】:

      • 不,&lt;p:dataExporter&gt; 适用于 Primefaces 4 中的数据表。在将必要的 jar 包含到 CLASSPATH 之后,我们应该做的就是不要在日期表标签的 paginatorTemplate 属性中使用它, 而是在此表的“facet”组件的header/footer 中。
      猜你喜欢
      • 2014-07-05
      • 1970-01-01
      • 2012-11-19
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      相关资源
      最近更新 更多