【问题标题】:jsf repeat inside datatablejsf在数据表内重复
【发布时间】:2012-08-20 04:32:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jsf datatable repeat


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      一个简单的解决方案是

      <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's 与 ul、li 或 div 一起使用,而不是与 table 一起使用。方法。

      【讨论】:

        猜你喜欢
        • 2015-03-18
        • 1970-01-01
        • 1970-01-01
        • 2019-06-11
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2011-02-23
        • 2018-04-28
        相关资源
        最近更新 更多