如何将 ID 属性添加到 header of h:datatable

how to add ID attribute to header of h:datatable

这里是 myfaces 中数据 table 的代码片段。

<h:dataTable class="pretty" value="#{someValue}" >
    <h:column>
        <f:facet name="header">
            <h:outputText value="Name"/>
         </f:facet>
    </h:column>
    <h:column>
        <f:facet name="header">
             <h:outputText value="Outstanding"/>
        </f:facet>
    </h:column>       
</h:dataTable> 

这将产生 html 和

<th></th> 

为 table。 我正在尝试将 id 和 header 设置为第 th 个标签:

<th id="value" headers="header value">

但不确定如何在 myfaces f:facet 中执行此操作,因为它仅提供要设置的名称以及其他一些值。非常感谢将 id 和 headers 设置为 th 标签的任何帮助。

谢谢, 马杜

还有另一种不使用 f:facet 的方法。这是一个 link How to add specific attributes to JSF datatable header

通过创建扩展以下内容的自定义渲染器解决了问题:

org.apache.myfaces.renderkit.html.HtmlTableRenderer

修改函数以添加额外的属性位:

protected void renderColumnHeaderCell(FacesContext facesContext, 
        ResponseWriter writer, UIComponent uiComponent, UIComponent facet,
        String headerStyleClass, int colspan) throws IOException

然后在faces-config.xml中添加配置指向我们的class:

<render-kit>
    <renderer>
        <component-family>javax.faces.Data</component-family>
        <renderer-type>javax.faces.Table</renderer-type>
        <renderer-class>OurClass</renderer-class>
    </renderer>
</render-kit>