Primefaces 3.5分页上的多重故障..我们有解决方法吗?

时间:2013-05-18 09:46:03

标签: primefaces

Primefaces 3.5在dataTable上引入了多重排序。但它有一个分页错误。

每次按下paginator按钮时,在表初始渲染时设置的sort列(col的sortMeta obj)将被发送到load方法而不是选定的排序列。如果未设置初始sortOrder,则发送null。

有没有解决这个问题的方法?有人知道这个版本是否已在任何Elite版本中修复过?或者,如果有解决方法吗?

需要一些紧急帮助。

由于

1 个答案:

答案 0 :(得分:1)

我能够通过在应用程序中进行一些额外的编码来克服这个问题。如果在以后的版本中修复了原始错误,则不需要这样做。

我的解决方案

我在桌子上添加了2个ajax事件,用于'sort'和'page'。我看到每个'排序'上的表格都有正确的多重主题列表,但是在分页调用中,它是用初始数据写的。

所以我在每个排序调用中保存了bean中的多重主题列表,并且在分页调用中,我已经将表中的multisortmeta列表与bean中的内容一起编写了。我的bean是一个会话bean,因此保存列表没有问题。

完成此操作后,multisort正在进行分页。以下是我的代码

view / xhtml code

                <p:dataTable id="userDataTable"
                value="#{userBean.userModel}" var="usr"
                paginator="true" paginatorAlwaysVisible="false" sortMode="multiple"
                rowsPerPageTemplate="20,40,60" rows="20"
                sortBy="#{userBean.preSortOrder}" lazy="true"
                resizableColumns="false" >

            <p:ajax event="page" listener="#{userBean.onPage}" ></p:ajax> 
            <p:ajax event="sort" listener="#{userBean.onSort}" ></p:ajax>

Bean代码

public void onSort( SortEvent event) {
    UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
    UIComponent tableComp = viewRoot.findComponent("userForm:userDataTable");
    DataTable table = ((DataTable)tableComp);
    preSortOrder = table.getMultiSortMeta();
 }
    public void onPage() {
    UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
    UIComponent tableComp = viewRoot.findComponent("userForm:userDataTable");
    DataTable table = ((DataTable)tableComp);
    table.setMultiSortMeta(preSortOrder);       
}

希望这对其他人也有用。