【问题标题】:primefaces dataexport from table with column content in ui:repeatprimefaces 从表中导出数据,其中包含 ui:repeat 中的列内容
【发布时间】:2012-06-07 21:12:11
【问题描述】:

我有一个在数据表上呈现的主详细信息结果集。

获取详细信息并在其中呈现以组合成单个输出字符串,该字符串保留在一列中。

<p:column>
  <f:facet name="header">BF Order Contents</f:facet>
  <ui:repeat value="#{order.listOfOrderDetails}" var="orderitem" varStatus="orderitemstatus" >
    <h:outputText value="#{orderitem.product.brand.name}-#{orderitem.product.name}#{orderitemstatus.last ? '':', '}" />
  </ui:repeat>
</p:column>

在数据表中,该列显示为“Some Brand-Some Product, Other Brand-Other Product”

但是当我导出到 EXCEL 时,我看到了:

com.sun.faces.facelets.component.UIRepeat@783622ba

在那一栏中。

有没有人知道我该如何克服这个问题(仅在 xhtml 中)。我不想更改支持 bean 来生成详细字符串。

顺便说一句:我正在使用 PF3.2、Mojarra 2.1.8、EL 2.2.1-b04、JDK1.7、Tomcat7

谢谢

【问题讨论】:

    标签: primefaces facelets mojarra


    【解决方案1】:

    可以通过以下方式解决。

    1. 不应将具有 ui:repeat 的列设为可导出,即为 p:column 设置 exportable="false" 属性。
    2. 再添加一列显示字符串属性(编写业务逻辑将字符串列表转换为逗号分隔的字符串并将其设置为字符串属性)
    3. 设置样式为显示:无;用于新列。
    4. 因此在 ui 显示期间,将显示上一列,在导出期间将显示新列,并显示逗号分隔列表。

    【讨论】:

      【解决方案2】:

      我真的不认为这是可能的,即使在 primefaces 源中覆盖 exporter class 也会变得复杂......

      你可能会更好alter the backing bean

      另外,您可以在与我打开的问题相关的问题上加星 Feature request: Datatables custom filter function - filterFunction (like sortFunction for sort)

      【讨论】:

        【解决方案3】:

        您可以编写一个 facelet 函数,在 Java 中进行迭代并返回一个字符串.. 这将起作用,只需将其放入 outputText,或者执行 2 列,一列将可导出为 false,另一列使 CSS 显示:无

        【讨论】:

          猜你喜欢
          • 2013-07-17
          • 2015-08-28
          • 2014-02-10
          • 2012-05-26
          • 1970-01-01
          • 2012-06-06
          • 2012-02-10
          • 2011-12-10
          • 1970-01-01
          相关资源
          最近更新 更多