RichFaces: Как сбросить страницу в datascroller после изменения значений в dataTable

Я имею rich:datascroller для меня rich:dataTable который работает хорошо, за исключением того, что когда я нахожусь на любом номере страницы (скажем, 5) и выполняю операцию поиска (или любую операцию, которая отображает dataTable). Пагинация покажет страницу 5, но я хочу, чтобы она была сброшена на страницу 1., когда произойдет операция.

На этом изображении, когда я иду на страницу 5 и снова нажимаю кнопку Поиск или выполняю очистку и поиск, нумерация страниц по-прежнему настроена на страницу 5, а не обратно на страницу 1.

Вот мой фрагмент кода:

<rich:datascroller id="prodDataScroller" for="prodClassificationOutputTable"
                   rows="100"   maxPages="10" fastStep="3" renderIfSinglePage="false"
                   immediate="false" page="#{prodClassificationBean.firstPage}">
</rich:datascroller>

<rich:dataTable id="prodClassificationOutputTable" border="0"
                width="100%" columnClasses="col" headerClass="column-header"
                style="overflow:auto;" rowClasses="odd,even" align="center"
                value="#{prodClassificationBean.outputClassificationWrappers}"
                var="prodClassificationRow" rows="100" rowKeyVar="row" immediate="true">
<!-- ... -->
<rich:dataTable>

Я проверил другие решения. Я пытался реализовать page атрибут для datascroller, но, похоже, он не работает. Я создал атрибут firstpage в бэк-бине, установленном в "1", когда происходит поиск, поэтому атрибут страницы в datascroller будет иметь значение 1. Но это не решает проблему.

Я хотел бы знать, где я иду не так.

1 ответ

Я смог решить проблему самостоятельно. Вот что я сделал:

<rich:datascroller id="prodDataScroller" for="prodClassificationOutputTable"
                   rows="100" maxPages="10" fastStep="3" renderIfSinglePage="false"
                   binding="#{prodClassificationBean.scroller}">     
</rich:datascroller>
<rich:dataTable id="prodClassificationOutputTable" border="0" width="100%" 
                columnClasses="col" headerClass="column-header" 
                style="overflow:auto;" rowClasses="odd,even" align="center"
                value="#{prodClassificationBean.outputClassificationWrappers}"
                var="prodClassificationRow" rows="100" rowKeyVar="row" immediate="true">

    <rich:column align="center" width="20%">
        <f:facet name="header">
            <h:outputText value="ID" />
        </f:facet>
        <h:outputText style="font-weight:bold" value="#{prodClassificationRow.outputId}"/>
    </rich:column>

</rich:dataTable>

Важно отметить, что binding="#{prodClassificationBean.scroller}" в датакроллере.

Теперь в бобе:

public class ProdClassificationBean {
    private transient HtmlDatascroller scroller; 
    //getter and setter for scroller

    // inside the action operation()
    if (scroller != null) {
        scroller.setPage("1");
    }
} // end of class 
Другие вопросы по тегам