延迟加载 Primefaces 数据表中未调用自定义排序方法

Custom sort methods are not being called in lazy loading Primefaces datatable

我的 Primefaces 数据表组件中包含用于自定义排序字符串和数字类型的方法调用。非惰性数据表的排序在当前情况下运行良好。但是当我切换到延迟加载时,自定义排序方法没有被调用(正确调试),尽管我有所需的加载实现并且我可以毫无缺陷地延迟加载我的数据。由于没有调用我自己的方法,因此PF自己的排序机制确实会出现排序错误。它对数据进行排序,但在处理我们字母表中的外来字符时遇到了麻烦,数字也被视为字符串等。

问题是:如何使用延迟加载正确调用自己的排序函数?

我正在使用 Primefaces 5.0、JSF 2.2 Mojarra、JDK 1.7、WebLogic 服务器

p.s:省略题外属性(过滤器等)。

<p:dataTable id="resourceDataTable" var="result" widgetVar="someWidgetVar"
         value="#{someBean.someDataModel.lazyModel}" paginator="true" rowKey="#{result.id}"
         rowsPerPageTemplate="5,10,15" rows="5" styleClass="incidentDatatableClass"
         paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
         currentPageReportTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
         lazy="true" rowSelectMode="checkbox">

        <p:column width="7">
            <p:selectBooleanCheckbox id="resourceCheckbox" value="#{result.selected}" style="margin-top: 4px;">
                <p:ajax listener="#{copResourceBean.resourceDataModel.selectionChanged(result)}" update=":resourceForm:selectedResourcePanel"/>
            </p:selectBooleanCheckbox>
        </p:column>

        <p:column id="resourceName" headerText="#{language['someHeader']}" sortBy="#{result.name}" 
                  sortFunction="#{helper.sortString}">
            <h:outputText value="#{result.name}" />
        </p:column>

        <p:column id="facilityName"  sortBy="#{result.facilityName}" sortFunction="#{helper.sortString}" headerText="#{language['someHeader']}" >
            <h:outputText value="#{result.facilityName}" />
        </p:column>

        <p:column id="availableQuantity" headerText="#{language['someHeader']}" width="80" sortBy="#{result.availableQuantity}" 
                  sortFunction="#{helper.sortNumeric}" >
            <h:outputText value="#{result.availableQuantity}" />
        </p:column>
    </p:dataTable>

自定义排序(或过滤器 functions/methods)在使用延迟加载时不起作用,它们也不打算起作用。在延迟加载的情况下,你应该在LazyDatamodel实现的load方法中实现sorting/filtering。