Primefaces ExcelExporter 与 CommandLinks

发布于 2024-12-10 01:36:43 字数 1020 浏览 0 评论 0原文

我有一个应用程序,其中包含 Primefaces 数据表中的命令链接。 commandLinks 链接到应用程序内的其他页面并传递参数。当我尝试使用 Primefaces 的 ExcelExporter 导出数据表时,生成的 .xls 文件包含 commandLink 的值属性,而不是嵌套在 commandLink 中的 outputText 的值属性。

dataTable 中的列代码:

<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}”中包含的数据。有没有办法格式化链接,以便它们与我想要的文本一起导出?

I have an application that contains commandLinks within a Primefaces dataTable. The commandLinks link to other pages within the application and pass parameters. When I try to export the dataTable using Primefaces' ExcelExporter, the generated .xls file contains the value attribute for the commandLink, not the value attribute for the outputText nested within the commandLink.

Column within dataTable code:

<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 code:

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

When I export the table using the ExcelExporter, the exported data is "myPage.xhtml", when I want it to be the data contained in "#{dataRow.columnId}". Is there a way to format the links so they are exported with the text that I want?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

〃安静 2024-12-17 01:36:43

我能够通过更改 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>

I was able to solve this problem by changing the links to commandLinks with actions that determine navigation and setPropertyActionListeners to pass parameters. It looks like PrimeFaces always takes the value from the parent component, so this seemed to be the best workaround. The dataExporter code stayed the same.

Modified xhtml code:

<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>

Navigation rule added to 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文