【问题标题】:Primefaces xml,pdf data export is not workingPrimefaces xml,pdf数据导出不起作用
【发布时间】:2013-06-10 07:31:07
【问题描述】:

我正在使用 primefaces 3.5 并希望将我的数据表导出为 pdf 或 xml。我没有收到任何错误,但它不起作用。当我单击按钮时,页面会自行刷新。我还添加了 poi-3.9.jar 和 itextpdf 但我得到了相同的结果。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title> Cem Yeniçeri</title>
    </h:head>
    <h:body>
        <h:form id="AraçBilgileriPaneli2">
            <p:graphicImage id="savronik_image" value="/savronik.png" width="500" height="150"/>
            <p:panel id="panel" header="Araç Bilgileri">
                <h:panelGrid id="grid" columns="5" style="margin-bottom:10px">
                    <h:outputLabel value="Araç Seçiniz : "/>
                    <p:inputText value="#{json_vehicle.arac_id}" />
                    <p:commandButton value="Seçilen Aracın Bilgilerini Getir"
                                     actionListener="#{json_vehicle.aracBilgileriniYukle(actionEvent)}" update="datatbl"/>
                    <p:commandButton value="Tüm Araçların Bilgilerini Getir"
                                          actionListener="#{json_vehicle.aracBilgileriniYukle2(actionEvent)}" update="datatbl"/>
                    <p:commandButton value="Tablo Sil"
                                     actionListener="#{json_vehicle.tabloSil(actionEvent)}" update="datatbl"/>
                </h:panelGrid>
                <p:messages id="messages3" showDetail="true" autoUpdate="true" closable="true" />
            </p:panel>
            <br/><br/>
            <p:dataTable id ="datatbl" var="v"  value="#{json_vehicle.vehicles}">
                <p:column headerText="Araç No">
                    <h:outputText value="#{v.vehicle_id}"/>
                </p:column>
                <p:column headerText="Araç Adı">
                    <h:outputText value="#{v.vehicle_name}"  />
                </p:column>
                <p:column headerText="Tarih">
                    <h:outputText value="#{v.record_date}" />
                </p:column>
                <p:column headerText="Araç Sahibi">
                    <h:outputText value="#{v.owner}"/>
                </p:column>
                <p:column headerText="Araç Tipi">
                    <h:outputText value="#{v.vehicle_type}"  />
                </p:column>
                <p:column headerText="Tahsis Yeri">
                    <h:outputText value="#{v.allocated_region}" />
                </p:column>
            </p:dataTable>
            <p:panel header="Export All Data">
            <h:commandLink>
                <p:graphicImage value="xml.png" />
                <p:dataExporter type="xml" target="datatbl" fileName="myxml" />
            </h:commandLink>
                <h:commandLink>
                    <p:graphicImage value="pdf.png" />
                    <p:dataExporter type="pdf" target="datatbl" fileName="mypdf" />
                </h:commandLink>
        </p:panel>
        </h:form>
    </h:body>
</html>

【问题讨论】:

  • 我遇到了同样的问题..日志中没有错误,但&lt;p:dataExporter&gt; 仍然无法正常工作! :(

标签: xml jsf pdf primefaces data-export


【解决方案1】:

尝试使用这个依赖:

        <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.7</version>
    </dependency>

如果你不使用 maven,也可以手动下载。 此外,请确保在 p:commandLink 中使用 'ajax=false' 属性。

【讨论】:

  • 如果这对某人有帮助,我还需要下载 Apache Commons Math 3.6.1 依赖项才能正常工作。除了 ajax="false" 属性,我还在 p:commandButton 中添加了 immediate="true" 属性。我的项目没有 Maven,所以我将 poi-5.0.0 和 commons-math3-3.6.1 jar 文件直接复制粘贴到我的项目“WEB-INF/lib”文件夹中
  • @Ghos3t,Commons Math 可能是您项目中的另一个需求所需要的。我的项目已经有了 itextpdf 和 POI,只需添加我的问题解决的“ajax = false”
【解决方案2】:

试试下面的代码。你必须 ajax=false。我建议使用 primefaces 命令链接,但这是可选的。

  <p:commandLink ajax="false">
            <p:graphicImage value="xml.png" />
            <p:dataExporter type="xml" target="datatbl" fileName="myxml" />
   </p:commandLink>

【讨论】:

  • 我添加了 ajax="false" 属性但不幸的是同样的问题。
  • 我按照上面的说明改了。
【解决方案3】:

试试这个; immediate="true"

   <p:commandLink ajax="false" immediate="true">
                <p:graphicImage value="xml.png" />
                <p:dataExporter type="xml" target="datatbl" fileName="myxml" />
   </p:commandLink>

【讨论】:

    【解决方案4】:

    我认为你的问题出在 commandLink,试试这个:

    <h:commandLink>
        <p:graphicImage value="resources/path/to/your/icon.png" />
        <p:dataExporter type="pdf" target="datatbl" fileName="data_table" />
    </h:commandLink>
    

    【讨论】:

    • 为什么这是一个好的答案?看不到从p:commandLink ajax="false" 切换到h:commandLink 的优势
    猜你喜欢
    • 2014-07-05
    • 2013-10-17
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多