5

我正在使用数据表,并且动态获取列数。我试着像这样在里面放重复:

<h:dataTable  value="#{movieUserBean.sits}" var="row" 
        rowClasses="oddRows,evenRows" headerClass="header"
        styleClass="table" cellpadding="5" cellspacing="0">

      <ui:repeat  value="#{row}" var="sit">
          <h:column>
             <h:selectBooleanCheckbox   value= "#{movieUserBean.checked[sit.id]}"/>
          </h:column>
      </ui:repeat>

坐是一个二维数组,我的想法是数据表应该在坐的行上循环并在每行内的每个值上重复循环(这是一个名为坐的对象,带有get方法:getId)。

问题是我得到了一张空桌子。似乎var "sit"没有获得价值。问题可能是数据表忽略了不在列范围内的任何元素吗?

4

2 回答 2

0

一个简单的解决方案是

<table>
    <ui:repeat  value="#{movieUserBean.sits}" var="row">
    <tr>
        <ui:repeat  value="#{row}" var="sit">
          <td><h:selectBooleanCheckbox value= "#{movieUserBean.checked[sit.id]}"/></td>
    </ui:repeat>
    </tr>
    </ui:repeat>
</table>

如果每行有可变列,它可能会与 css 样式混淆。例如,第一行有 5 列,第 2 行有 3 列,您将如何设置它们的样式。我看到它的方式是你想在一个被复选框占据的剧院中显示座位。

您可以尝试将 ui:repeat 与 ul、li 或 div 一起使用,而不是与表一起使用。方法。

于 2014-06-02T16:30:33.920 回答
0

ui:repeat 在渲染响应阶段之前被调用,我建议你使用primefaces的DynamicColumns http://www.primefaces.org/showcase/ui/datatableDynamicColumns.jsf

于 2014-03-31T19:47:46.570 回答