【问题标题】:How to set the width for the dataTable rendered column in JSF?如何设置JSF中dataTable渲染列的宽度?
【发布时间】:2010-07-27 13:54:07
【问题描述】:

JSF h:column tag fix width

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

【问题讨论】:

    标签: jsf


    【解决方案1】:

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

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

    <h:dataTable columnClasses="column1,column2,column3">
        <h:column>...</h:column>
        <h:column>...</h:column>
        <h:column>...</h:column>
    </h:dataTable>
    

    这最终会是这样的:

    <table>
        <tbody>
            <tr>
                <td class="column1">...</td>
                <td class="column2">...</td>
                <td class="column3">...</td>
            </tr>
        </tbody>
    </table>
    

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

    .column1 { width: 200px; }
    .column2 { width: 100px; }
    .column3 { width: 50px; }
    

    【讨论】:

    • 如果你有许多 怎么办?顺序会混淆。
    • @Ramsus:是的,确实,这是设计使然。您可以改为在 bean 中动态填充它并像 columnClasses="#{bean.columnClasses}" 那样引用它。
    • 这也是我在考虑过之后想到的解决方案:)。
    • @BalusC 如果 h:column 中的值增加,宽度也会增加。如何解决。我需要换行。
    • @BalusC 有没有办法只指定第三列的宽度而无需为前两列指定 CSS?
    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2012-06-23
    • 2011-06-18
    • 2016-08-11
    • 2014-10-02
    • 2015-02-22
    相关资源
    最近更新 更多