如何在JSF中设置dataTable呈现列的宽度?

gek*_*ish 16 jsf

JSF h:列标记修复宽度

我试过这种方式,但我无法让这个工作.使用呈现的HTML,我看不到Header或dataTable行的宽度属性.我使用JSF 1.2而没有任何组件库.可能是什么问题呢?

Bal*_*usC 40

诚实地说这个相关的答案对我来说没有意义.的<h:column>,因为它是在默认的JSF实现支持这些属性都没有.为什么它获得6票并被标记为接受,这远远超出了我.这将是无知或巧合(也许提问者和答案都使用JSF实现我不知道哪个具有渲染器,<h:column>其自动将所有未知属性转换为真正的HTML属性,但至少,标准JSF RI/Mojarra不这样做,MyFaces也许?).

也就是说,要单独设置列的样式,您需要使用该columnClasses属性<h:dataTable>.它接受一个逗号分隔的CSS类名字符串,随后将应用于<td>生成的元素<h:column>.

<h:dataTable columnClasses="column1,column2,column3">
    <h:column>...</h:column>
    <h:column>...</h:column>
    <h:column>...</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

这最终会像:

<table>
    <tbody>
        <tr>
            <td class="column1">...</td>
            <td class="column2">...</td>
            <td class="column3">...</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

要指定宽度,只需相应地应用CSS.

.column1 { width: 200px; }
.column2 { width: 100px; }
.column3 { width: 50px; }
Run Code Online (Sandbox Code Playgroud)

  • @Ramsus:是的,确实,这是设计的.您可以在bean中动态填充它,并像`columnClasses ="#{bean.columnClasses}"`那样引用它. (2认同)
  • 这是我在思考升技后想到的解决方案:). (2认同)