来自表的primefaces dataexport,其中列内容为ui:repeat

时间:2012-06-07 21:12:12

标签: primefaces facelets mojarra

我有一个主数据结果集,我在数据表中提供。

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

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

在数据表上,该列显示为“某些品牌 - 某些产品,其他品牌 - 其他产品”

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

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

在该栏目中。

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

BTW:我参加了PF3.2,Mojarra 2.1.8,EL 2.2.1-b04,JDK1.7,Tomcat7

由于

3 个答案:

答案 0 :(得分:4)

可以通过以下方式解决。

  1. 具有ui:repeat的列不应该是可导出的,即set exportable =&#34; false&#34; p:column的属性。
  2. 再添加一列以显示字符串属性(编写业务逻辑以将字符串列表转换为逗号分隔字符串并将其设置为字符串属性)
  3. 将样式设置为display:none;对于新专栏。
  4. 所以在ui显示期间,将显示上一列,在导出期间,将显示新列,显示逗号分隔列表。

答案 1 :(得分:0)

我真的不认为这是可能的,即使覆盖了主要来源中的exporter class,它也会变得复杂......

你可能更好alter the backing bean

此外,您可以在与我Feature request: Datatables custom filter function - filterFunction (like sortFunction for sort)

打开的问题相关的位置添加星标

答案 2 :(得分:0)

您可以编写一个facelet函数,在Java中进行迭代并返回一个字符串..这样可以将它放到outputText中,或者做2个列,一个放置可导出的false,另一个放置CSS显示:none