2

我正在使用 primefaces 来显示一组动态列,如下所示:

    <p:dataTable value="#{queryResults}" var="row" style="margin-top:15px;">
         <p:columns value="#{row.cells}" var="cell" headerText="#{cell.field.label}" rendered="#{not cell.field.hidden}">
               <h:outputText value="#{cell.value}" />
          </p:columns>
    </p:dataTable>

我的环境是 Tomcat 7 上的 Majorra 2.0.3、PF 3.5、Spring Webflow 2.3

当我点击命令按钮时,我得到了部分响应,但表格没有单元格:

    <div id="alertForm:j_idt58" class="ui-datatable ui-widget" style="margin-top:15px;">
          <table role="grid"><thead><tr role="row"></tr></thead><tfoot></tfoot>
          <tbody id="alertForm:j_idt58_data" class="ui-datatable-data ui-widget-content">
              <tr data-ri="0" class="ui-widget-content ui-datatable-even" role="row"></tr>
              <tr data-ri="1" class="ui-widget-content ui-datatable-odd" role="row"></tr>
              <tr data-ri="2" class="ui-widget-content ui-datatable-even" role="row"></tr>
              <tr data-ri="3" class="ui-widget-content ui-datatable-odd" role="row"></tr>
          </tbody></table></div>

即使调用了 java 代码,也会按预期返回行。我第二次按下按钮,调用了相同的 java 代码,但部分响应包含数据表及其单元格,因此它正确显示......

我想念什么?

注意:结合数据表+几列,一切正常......


尝试<p:datatable>单独<h:form>为我解决问题。

4

2 回答 2

0

解决方案是:以下:(阅读手册) p:columns 仅用于显示标题和创建索引变量(columnIndexVar),允许您以“旧式”索引方式访问数据。

手册说:

动态列 如果您不知道要渲染多少列,动态列很方便。Columns 组件用于以编程方式定义列。它需要一个集合作为值,两个迭代器变量称为 var 和 columnIndexVar。

<p:dataTable var="cars" value="#{tableBean.dynamicCars}" id="carsTable">
    <p:columns value="#{tableBean.columns}" var="column" columnIndexVar="colIndex">
        <f:facet name="header">
            <h:outputText value="#{column}"/>
        </f:facet>
        <h:outputText value="#{cars[colIndex].model}" /> <br />
        <h:outputText value="#{cars[colIndex].year}" /> <br />
        <h:outputText value="#{cars[colIndex].color}"/>
    </p:columns>
</p:dataTable>
于 2013-12-11T10:05:33.653 回答
0

尝试<p:datatable>单独<h:form>为我解决问题。

于 2013-10-08T09:12:34.290 回答