代码之家  ›  专栏  ›  技术社区  ›  J Dev

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

  •  1
  • J Dev  · 技术社区  · 7 年前

    我有一个Primefaces数据表,其中一列有三个输出文本和一个带有工具提示的命令按钮。该按钮将显示输出标签,如下所示

    这是出口标签。这是文本。组织。基本面。组成部分命令按钮。CommandButton@3f60d3f9

    如何不包含/打印带有工具提示的此命令按钮以将dataTable导出到excel?

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

    2 回复  |  直到 7 年前
        1
  •  7
  •   ltlBeBoy    6 年前

    作为对@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>
    

    支持bean:

    public String exportBrand(Car car) {
        if (car == null) {
            return null;
        }
    
        return car.getBrand();
    }
    
        2
  •  2
  •   Kukeltje    7 年前

    在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循环中只导出您想要导出的东西。