gpt4 book ai didi

具有动态列的 Primefaces Datatable 自定义排序功能

转载 作者:行者123 更新时间:2023-12-02 04:39:57 25 4
gpt4 key购买 nike

使用 Primefaces 3.5,当我尝试对动态列使用自定义排序函数时,我得到一个 PropertyNotFoundException

我在 xhtml 文件中的数据表是(只显示相关代码)

<p:dataTable id="dataTableVersioneMonitoraggio" var="row" value="# {monitoraggioBean.pacchetti}" 
rowKey="#{row.pacchetto.id}">

<p:columns value="#{monitoraggioBean.columns}" var="column"
sortBy="#{row.celle[column.posizione].cella.valore}"
sortFunction="#{monitoraggioBean.customSort}">
...
</p:columns>

</p:dataTable>

我的 View 范围支持 bean 中不完整的方法是:

public int customSort(Object val1, Object val2) {
System.out.println("mySort" + val1 + "/" + val2);
return 0;
}

问题是我无法在 bean 中访问此方法,并且出现以下错误:

GRAVE [javax.enterprise.resource.webcontainer.jsf.context] (http--0.0.0.0-8080-3) javax.el.PropertyNotFoundException: /monitoraggio.xhtml @80,161 sortFunction="#{monitoraggioBean.customSort}": The class 'com.packman.bean.MonitoraggioBean' does not have the property 'customSort'.

我已经尝试使用 p:column 标签自定义排序功能,它有效。

有什么想法吗?

谢谢

最佳答案

我遇到过类似的问题,我是这样解决的。

首先,我制作了一个排序器类(助手),然后我将通过 EL 在我的 JSF 页面中使用它。

排序器.java

@Component
public class Sorter {


/**
* Compares two objects that are Strings on their int value. Can be used to sort any column that contains Integer-based data.
* @param obj1
* @param obj2
* @return
*/
public int sortIdByString(Object obj1,Object obj2){
int id1 = Integer.parseInt((String)obj1);
int id2 = Integer.parseInt((String)obj2);
if(id1 < id2){
return -1;
}else if(id1 == id2){
return 0;
}else{
return 1;
}
}
}

JSF 页面

<p:column headerText="#{msgs['page.customer.detail.vendingMachine.number']}"
sortBy="#{vendingMachine.nummer}" sortFunction="#{sorter.sortIdByString}">
<h:outputText value="#{vendingMachine.nummer}"/>
</p:column>

关于具有动态列的 Primefaces Datatable 自定义排序功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com