【发布时间】:2016-09-24 11:46:13
【问题描述】:
我的 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>
【问题讨论】:
-
正如预期的那样。使用延迟加载,您需要在 LazyDataModel 的加载方法中进行排序
-
是的。正如 pg 中明确指出的那样。 161 :) 我错过了 8 分钟的解决方案,因为我正在延迟加载所需的数据! (嗯。好吧,那很糟糕)你能把它作为回应发布,这样我们就可以告诉全世界问题已经解决了吗?primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf
标签: sorting jsf jsf-2 primefaces datatable