jsf在数据表中重复

时间:2012-08-24 15:24:19

标签: jsf datatable repeat

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

<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>

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

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

2 个答案:

答案 0 :(得分:0)

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

的DynamicColumns

答案 1 :(得分: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:使用ul,li或div来重复,而不是使用表格。做法。