搜索掩码的渲染适用于ui:repeat
,但不适用于p:dataTable
。有人可以解释一下吗?
工作:
<p:panelGrid>
<ui:repeat value="#{curSearch.getSearchMaskDescription().getRows()}" var="curRow" varStatus="rowStatus">
<p:row >
<ui:repeat value="#{curRow.getElements()}" var="curMaskElement" varStatus="colStatus">
<p:column colspan="#{curMaskElement.columnSpan}">
<mycomp:searchFieldCC isShortSearchMask="false" curMaskElement="#{curMaskElement}" curRowIndex="#{rowIndexVar}"
curColumnIndex="#{columnIndexVar}" />
</p:column>
</ui:repeat>
</p:row>
</ui:repeat>
</p:panelGrid>
不工作:
<p:dataTable id="searchMaskTableId" value="#{curSearch.getSearchMaskDescription().getRows()}" var="curRow" rowIndexVar="rowIndexVar"
styleClass="searchMaskFieldsGrid">
<p:columns value="#{curRow.getElements()}" var="curMaskElement" columnIndexVar="columnIndexVar" colspan="#{curMaskElement.columnSpan}">
<mycomp:searchFieldCC isShortSearchMask="false" curMaskElement="#{curMaskElement}" curRowIndex="#{rowIndexVar}" curColumnIndex="#{columnIndexVar}" />
</p:columns>
</p:dataTable>
区别仅在于我认为的迭代。 ui:repeat
是在另一个阶段构建的,但我原本以为ui:repeat
不起作用。
使用p:dataTable
呈现的html:
<div id="searchInstancesFormId:searchMaskTableId" class="ui-datatable ui-widget searchMaskFieldsGrid">
<div class="ui-datatable-tablewrapper">
<table role="grid">
<thead id="searchInstancesFormId:searchMaskTableId_head">
<tr role="row"></tr>
</thead>
<tbody id="searchInstancesFormId:searchMaskTableId_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>
<tr data-ri="4" class="ui-widget-content ui-datatable-even" role="row"></tr>
</tbody>
</table>
</div>
</div>
没有呈现的列。为什么? 表单通过ajax更新。 数据模型是正确的。