JSF 2:在2列之后不复制dataTable columnClasses

时间:2011-01-07 15:54:40

标签: jsf jsf-2

我正在使用glassfish 3.0.1,并且是第一次在dataTable中尝试使用columnClasses。

这是这样的:

<h:dataTable value="#{coreGridBean.heroBeanList}" var="hero"
                    captionStyle="font-size: 0.95em; font-style:italic"
                    styleClass="orders"
                    headerClass="ordersHeader"
                    footerClass="ordersHeader"
                    columnClasses="oddColumn,evenColumn">

从核心jsf书中读取,它表示只通过在columnClasses属性中指定2个类,当列数量大于2时,将重复这两个类。

假设我有五列,columnClasses将变为oddColumn,evenColumn,oddColumn,evenColumn,oddColumn,我们只需要像这样定义:columnClasses =“oddColumn,evenColumn”

但根据我对3列的经验,它不是这样的。从第三栏开始,他们没有上课。我必须指定columnClasses =“oddColumn,evenColumn,oddColumn”才能使其正常工作

这是一个错误还是我只是有一个错误的错误?

1 个答案:

答案 0 :(得分:13)

重复仅适用于rowClasses

来自JSF 2.0 h:dataTable tag documentation

  

columnClasses

     

将用于此表的列的CSS样式类的逗号分隔列表。还可以为任何单个列指定以空格分隔的类列表。 如果此列表中的元素数小于UIData的实际列子元素数,则不会为每列输出大于列表中元素数的“class”属性。如果列表中的元素数量大于UIData的实际列子元素数,忽略最后一列之后列表中位置的元素。

     
     

rowClasses

     

以逗号分隔的CSS样式类列表,它将应用于此表的行。还可以为任何单独的行指定空格分隔的类列表。反过来,这些样式应用于表中的每一行。例如,如果列表包含两个元素,则列表中的第一个样式类将应用于第一行,第二个行应用于第二行,第一行应用于第三行,第二行应用于第四行等。换句话说,我们一直在遍历列表,直到我们到达终点,然后我们再次从头开始。

也许这本书错了,或者你误读了这本书。

由于列号通常总是在视图定义中固定,因此只需自己重复它就不费力。

<h:dataTable columnClasses="oddColumn,evenColumn,oddColumn,evenColumn">
    <h:column></h:column>
    <h:column></h:column>
    <h:column></h:column>
    <h:column></h:column>
</h:dataTable>