4

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

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

<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

谢谢

4

3 回答 3

5

可以通过以下方式解决。

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

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

你可能更好alter the backing bean

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

于 2012-06-07T21:58:46.527 回答
0

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

于 2014-04-27T21:27:19.160 回答