使用 ui:repeat 中的列内容从表中导出primefaces 数据

Ser*_*soy 4 facelets primefaces 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

在那一栏中。

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

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

谢谢

小智 5

可以通过以下方式解决。

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


Dan*_*iel 1

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

你可能更好alter the backing bean

另外,您可以在与我打开的问题相关的问题上添加一个星号功能请求:数据表自定义过滤器函数 - filterFunction(如用于排序的 sortFunction)