【问题标题】:How to use ui:repeat in datatable to append columns?如何在数据表中使用 ui:repeat 来追加列?
【发布时间】:2014-09-08 12:18:35
【问题描述】:

我想生成一个表格列表。每个月 1 个表。每个月的每一天都有 1 列。这是我正在使用的 JSF 部分。

<ui:repeat value="#{worklogService.months}" var="monthnum">
    <p:dataTable value="#{worklogService.getTableForMonth(monthnum)}" var="tabrow">
        <p:column headerText="Name">
            <h:outputLabel value="#{tabrow.get(0)}"></h:outputLabel>
        </p:column>
        <ui:repeat value="#{worklogService.getDaysOfMonth(monthnum)}" var="daynum">
            <p:column headerText="#{daynum}">
                <h:outputText value="#{tabrow.get(daynum)}"></h:outputText>
            </p:column> 
        </ui:repeat>
    </p:dataTable>
</ui:repeat>

#{worklogService.months} 返回List&lt;Integer&gt;。每个月一个号码。 #{worklogService.getTableForMonth(monthnum)} 返回List&lt;List&lt;String&gt;&gt;

每个表的第一列都是相同的。我想根据月份生成所有其他列。结果是 12 个表,只有 1 列(第一列)。这里可能是什么问题?又该如何解决呢?

【问题讨论】:

    标签: jsf


    【解决方案1】:

    此构造失败,因为 UIData 之类的 &lt;p:dataTable&gt; 组件仅支持 UIColumn 子级,在 &lt;p:dataTable&gt; 的情况下只能是 &lt;p:column&gt;&lt;p:columns&gt;

    在您的特定情况下,您有 2 个选项:

    1. 使用&lt;p:columns&gt; 代替&lt;ui:repeat&gt;&lt;p:column&gt;

      <p:columns value="#{worklogService.getDaysOfMonth(monthnum)}" var="daynum" headerText="#{daynum}">
          #{tabrow.get(daynum)}
      </p:columns> 
      
    2. 使用&lt;c:forEach&gt; 代替&lt;ui:repeat&gt; (explained here):

      <c:forEach items="#{worklogService.getDaysOfMonth(monthnum)}" var="daynum">
          <p:column headerText="#{daynum}">
              <h:outputText value="#{tabrow.get(daynum)}"></h:outputText>
          </p:column> 
      </c:forEach>
      

    【讨论】:

    • 解决方案 1 不起作用,因为 PrimeFaces >4.0(.x) 中的 this bug 他们“拒绝”修复(或至少因错误原因关闭)。它发生在其他“重复”组件中,以喜欢选项卡和它们自己的数据表。
    • @balus c 在使用 ui 内的数据表时:数据表内的重复滚动条无法正常工作(如果我滚动我的第一个数据表水平滚动条,单独使用我的数据表,第二个数据表标题也是滚动)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多