【问题标题】:how to add ID attribute to header of h:datatable如何将 ID 属性添加到 h:datatable 的标题
【发布时间】:2016-02-03 05:30:03
【问题描述】:

这是myfaces中数据表的代码sn-p。

<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> 

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

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

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

谢谢, 马杜

【问题讨论】:

  • 顺便说一句,我尝试设置 id 使用:&lt;h:dataTable class="pretty" value="#{someValue}" &gt; &lt;h:column columnId="value" &gt; &lt;f:facet name="header"&gt; &lt;h:outputText value="Name"/&gt; &lt;/f:facet&gt; &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;h:outputText value="Outstanding"/&gt; &lt;/f:facet&gt; &lt;/h:column&gt; &lt;/h:dataTable&gt;
  • 将 id 属性赋予 f:facet 有什么好处,因为您知道 facet 存储为属性?
  • 这是为了解决 WCAG 问题:成功标准 1.3.1 信息和关系 (A)。 检查 245:具有多于一行/一列标题的数据表不使用 id 和 headers 属性来识别单元格。修复:将 id 和 headers 属性添加到表格单元格,以便它们识别与标题相关的单元格。 [achecker.ca/checker/suggestion.php?id=245]

标签: jsf datatable myfaces facet


【解决方案1】:

通过创建自定义渲染器来解决问题:

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 中添加配置以指向我们的类:

<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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 该功能仅在 JSF 2.2 之后可用。
    • 哦,我们正在使用 Myfaces-2.0.2。我不认为它会起作用。还有其他方法吗?
    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多