自定义p:dataTable的导出输出格式

时间:2018-03-13 07:18:52

标签: jsf primefaces datatable export

我有一个Primefaces dataTable,其中一列有三个输出文本,一个命令按钮带有工具提示。出现按钮,输出标签为

  

这是出口标签。这是针对text.org.primefaces.component.commandbutton.CommandButton@3f60d3f9

如何使用工具提示包含/打印此命令按钮以将dataTable导出为ex​​cel?

我无法将命令按钮移动到业务案例的新列。

2 个答案:

答案 0 :(得分:1)

在PrimeFaces中,您可以使用exportFunction属性(在文档中)覆盖列bij的导出内容。如果您在文档中看到此内容,则可以使用Google轻松找到https://forum.primefaces.org/viewtopic.php?t=50284。其中,给出了如何覆盖列的“导出值”的示例:

XHTML:

<p:column exportFunction="#{testView.exportBrand}">
   <f:facet name="header">
       <h:outputText value="Brand" />
  </f:facet>
  <h:outputText value="#{car.brand}" />
</p:column>

爪哇:

public String exportBrand(UIColumn column) {
    String value = "";
    for(UIComponent child: column.getChildren()) {
        if(child instanceof ValueHolder) {
            value = ComponentUtils.getValueToRender(FacesContext.getCurrentInstance(), child);
        }
    }

    return value + "_TEST";
}

只需对此进行扩展,并在for循环中仅导出要导出的内容。

答案 1 :(得分:0)

除了@Kukeltje的答案外,我想提及一下,您还可以指定自己的方法参数(而不是使用UIColumn):

手镯:

<p:column exportFunction="#{testView.exportBrand(car)}">
   <f:facet name="header">
       <h:outputText value="Brand" />
  </f:facet>
  <h:outputText value="#{car.brand}" />
</p:column>

后备豆:

public String exportBrand(Car car) {
    if (car == null) {
        return null;
    }

    return car.getBrand();
}