我在a4j:repeat
内部使用rich:dataTable
。每次dataTable滚动程序引用上一个dataTable滚动器索引值中的索引时。所以当前的dataTable有值,但它显示的是空表。
因为,
以前的dataTable列表大小为200。以前的数据表滚动条索引是7
当前DataTable列表大小为5。
<a4j:repeat value="#{Bean.outerTOList}" var="sampleValue">
<rich:dataTable id="dataTable"
var="innerTo"
rows="5"
value="#{sampleValue.sampleInnerTOList}" >
<f:facet name="header">
<rich:column>
<h:outputText value="Header"/>
</rich:column>
</f:facet>
<rich:column>
<h:outputText value="#{innerTo.name}"/>
</rich:column>
<f:facet name="footer">
<rich:datascroller id="dataTableScrollerId"
ajaxSingle="false" maxPages="3"
page="1">
</rich:datascroller>
</f:facet>
</rich:dataTable>
</a4j:repeat>
我认为您必须将<ui:repeat>
更改为(JSTL)<c:forEach>
(请参阅http://www.crazysquirrel.com/computing/java/jsp/jstl-forEach.jspx)因为它有另一个生命周期,而在这种情况下,使用ui:repeat的实现是不起作用的。
在这样做之后,您可能还需要某种ID的"鉴别器",因为您不能对所有表组件进行相同的命名。您必须使用类似id="datatable0"的东西,。。。id="datatable1"等等。您可以使用c:forEach的varStatus="status"
属性来执行此操作。它有一个可以用作计数器的属性:#{status.index}