如何从richfaces datatable获取当前页面对象

时间:2015-09-22 14:28:57

标签: checkbox datatable richfaces

我有一个rich:dataTable,并为每列实现排序和过滤,其中一列我有一个复选框,用于选择当前页面中的所有行。

问题在于,当我选中第1页的全选复选框时,所有行都被正确选中,但是我切换到第2页,仍然选中了全选复选框,但基本上应该判断是否全部在第2页中选择了行,如果没有,则不应选中全选复选框。

所以我必须知道当前页面的所有对象,但如果对表进行排序和过滤,很难得到它。

有人能给我一些建议如何解决吗?

<rich:dataTable id="table"
                     value="#{model.displayedData}" var="data"
                     rows="#{model.itemsPerPage}">

                    <rich:column>
                        <f:facet name="header">
                            <h:panelGroup layout="block">
                                <h:selectBooleanCheckbox id="HeaderCheckBox"
                                    disabled="#{model.selectAllDisabled}"
                                    value="#{model.selectAllChecked}" immediate="true">
                                    <a4j:support event="onclick" action="#{model.selectAll}" onclick="selectAll(this)" 
                                        reRender="table" status="commonstatus">
                                        <a4j:actionparam assignTo="#{model.allCurrentPageItems}" name="allItems" value="getAllCurrentPageIds()" noEscape="true"/>
                                    </a4j:support>
                                </h:selectBooleanCheckbox>
                            </h:panelGroup>
                        </f:facet>
                            <h:selectBooleanCheckbox
                                value="#{data.selected}"
                                disabled="#{data.disabled}" immediate="true">
                                <a4j:support event="onclick" action="#{model.select}" onclick="clickcheckBoxhandling(this);" 
                                             reRender="table" status="commonstatus">
                                    <a4j:actionparam assignTo="#{model.seletedId}" name="seletedItem" value="#{data.id}" />
                                    <a4j:actionparam assignTo="#{model.selected}" name="itemSelection" value="this.checked" noEscape="true"/>
                                </a4j:support>
                            </h:selectBooleanCheckbox>
                    </rich:column>

服务器端模型bean是:

private String seletedId;
private boolean selected;
private boolean selectAllDisabled;
private boolean selectAllChecked;

public List<DataModel> getDisplayedData() {
    if (filter.isFilterEmpty()) {
        displayedData = allData;
    } else {
        displayedData = filter.getFilteredData(allData);
    }
    return displayedData;
}

所以我需要设置&#34; selectAllChecked&#34;用户切换到不同页面时按正确属性,按每列排序并按每列过滤。 因此,我想获得精确的当前页面数据列表,即使是已排序和过滤,以便我可以判断是否选择了所有当前页面数据来设置&#34; selectAllChecked&#34;属性。

所以问题是,我怎么能得到当前页面的行对象? 以上是否还有其他任何方式来实现我的请求?

0 个答案:

没有答案