jsf-2 - 使用多重排序的 PrimeFaces 数据表的初始排序顺序

标签 jsf-2 primefaces

我正在尝试在 Primeface 数据表上实现多重排序。我们使用的是 Primefaces v3.5。我在 LazyLoadClass 中创建了一个新的加载方法,该方法采用 List of SortMeta> 参数。

但是我在表格的初始加载中遇到了问题。调用load方法时,SortMeta>的List为null。我也尝试过不指定数据表的初始 sortBy 和 sortOrder 。在这两种情况下,结果是相同的。

看到我们有了这个新类 SortMeta 来支持多重排序,我怀疑指定初始排序字段和顺序的方式也会改变。但我在任何地方都找不到任何例子来指出差异。手册3.5没有提到任何区别。

为什么我们可以将 SortMeta> 的列表设为 null?有关将 multisort 与 Lazyload 一起使用的示例代码的任何指针吗?

最佳答案

我能够让它发挥作用。

本质上,我们需要在 SortMeta 对象中提供 UIColumn 才能正常工作。对于渲染时的初始排序,我必须在 bean 中找到该组件并将其分配给 sortMeta。

下面是我在 View xhtml中的代码

        <p:dataTable id="transDataTable" var="trans" 
        value="#{myBean.transModel}" paginator="true" rows="50"
        paginatorAlwaysVisible="false" lazy="true"
        sortMode="multiple" sortBy="#{myBean.preSortOrder}" 
        resizableColumns="true">

        <p:column headerText="User" sortBy="#{trans.user.name}" >
            #{trans.user.name}
        </p:column>
        <p:column headerText="Company" sortBy="#{trans.companyName}">
            #{trans.companyName}
        </p:column>
        <p:column headerText="Join Date" id="joinDateTime" 
            sortBy="#{trans.joinDateTime}" >
            <h:outputText value="#{trans.joinDateTime}" />
        </p:column>
    </p:dataTable>

这是我在 @PostConstruct 上调用的 bean 代码

        /*
     * method to build initial sort order for multisort
     */
    private void buildSortOrder() {
        UIViewRoot viewRoot =  FacesContext.getCurrentInstance().getViewRoot();
        UIComponent column = viewRoot.findComponent("transDataTable:joinDateTime"); 

        SortMeta sm1 = new SortMeta();
        sm1.setSortBy((UIColumn)column);
        sm1.setSortField("joinDateTime");
        sm1.setSortOrder(SortOrder.DESCENDING);
        preSortOrder.add(sm1);          
    }

我不确定这是否是正确的方法,但它确实有效。当我们必须在 bean 代码中使用 View 中的 id 时,我通常会感到不舒服,因为当人们不小心时,这可能会引入错误。

感谢@CagatayCivici 的快速提示。

关于jsf-2 - 使用多重排序的 PrimeFaces 数据表的初始排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199805/

相关文章:

java - 组合组件放在哪里?(JSF 2.0)

java - JSF2 AJAX h :selectOneMenu listener doesn't call

validation - JSF 2.1.X 验证在 Glassfish 3.1.2 与 Tomcat 6 & 7 上的行为不同

validation - 至少填写一个字段时,根据需要验证一组字段

jsf - 如何使用 columnToggler 仅导出选定的列

jsf-2 - 如何在primefaces的数据表中迭代Map<String,Collection>

css - 更改命令链接标题的样式

redirect - JSF - 从 @PostConstruct 重定向后保留 Faces 消息

css - p :panelGrid inside p:panelGrid, 如何删除外部 p :panelGrid? 中的边框

image - 如何将图像添加到 primefaces 菜单栏?