【问题标题】:Customized rendering of elements in datatable数据表中元素的自定义渲染
【发布时间】:2015-06-30 16:49:09
【问题描述】:

我在数组列表中有 n 个元素,我想在 (n/3) X 3 格式的表格中显示所有元素(通过单次迭代),并带有相应数量的单选按钮,例如,

<table>
<tbody>
<tr>
  <td><input type="radio" name="category1" id="category1" value="1"></td>
  <td><input type="radio" name="category1" id="category1" value="2"></td>
  <td><input type="radio" name="category1" id="category1" value="3"></td>
</tr>
<tr>
  <td><input type="radio" name="category1" id="category1" value="4"></td>
  <td><input type="radio" name="category1" id="category1" value="5"></td>
  <td><input type="radio" name="category1" id="category1" value="6"></td>
</tr>
...
<tr>
  <td><input type="radio" name="category1" id="category1" value="n"></td>
  <td></td>
  <td></td>
</tr>
</tbody>
</table>

请帮忙

【问题讨论】:

    标签: jsf datatable uirepeat


    【解决方案1】:

    您可以只使用h:panelGridc:forEach

    <h:panelGrid columns="3">
        <c:forEach items="#{myBean.list}"  var="item">
            <h:outputText value="#{item}" />
        </c:forEach>
    </h:panelGrid>
    

    它将呈现一个&lt;table /&gt;

    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
            <td>5</td>
            <td>6</td>
        </tr>
        ...
    </tbody>
    

    【讨论】:

    • 应该可以,但是既然有ui:repeat,为什么还要使用c:forEach
    • 谢谢大家,我试过了,但没有满足我的要求。实际上,我必须渲染收音机来代替这些 1,2,3... n。但如果我基于 c:forEach 执行此操作,则一个单选按钮本身会分成 3 列(意味着一行中的 1 个单选按钮除以 3 列)。而我需要连续渲染 3 个单选按钮(意味着 3 列)
    • @tt_dev ui:repeat 本身是一个组件,而 c:foreach 是一个标记处理程序。在这种情况下,如果您使用 ui:repeat 而不是 c:foreach,那么 panelgrid 就只有一个子网格(ui:repeat 本身)。因此,它将呈现网格第一列中的所有内容。但是,您当然可以使用 ui:repeat 代替,但是您必须手动创建网格。
    • @Krishnan 答案完全满足您在原始问题中提到的要求。如果您有不同的要求,请在原帖中阐明您的问题。例如我不明白您所说的“一个按钮被分成 3 列”是什么意思?
    • @stg 根据您的要求,我的实际要求已在原始帖子中更新。提前致谢
    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 2021-10-01
    • 2022-07-05
    • 2021-05-22
    • 2023-03-13
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多