rich:dataScroller index指的是a4j:repeat中的前一个dataTable滚动索引

时间:2013-08-20 10:19:09

标签: jsf richfaces

我在rich:dataTable内使用a4j:repeat。 每次dataTable Scroller都会从之前的dataTable滚动条索引值中引用索引。所以当前的dataTable有值,但它显示空表。

因为,

之前的dataTable列表大小为200。  以前的dataTable滚动条索引是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>

1 个答案:

答案 0 :(得分:1)

我认为您必须将<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}