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

问题描述 投票:0回答:2

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

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

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

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

jsf primefaces datatable export
2个回答
1
投票

在PrimeFaces中,您可以使用exportFunction属性(在文档中)覆盖列bij的导出内容。如果你在文档中看到这个,你很容易通过谷歌找到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>

Java的:

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循环中仅导出要导出的内容。


2
投票

作为@Kukeltje的答案的补充,我想提一下你也可以指定你自己的方法参数(而不是使用UIColumn):

的facelet:

<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();
}
© www.soinside.com 2019 - 2024. All rights reserved.