List集合按其元素對象某個字段排序。

冷开水 发布于 2015/11/25 09:58
阅读 856
收藏 0

项目使用的是primeface做页面开发,有一个datatable用来显示role这个表,如图。现在想实现按字段排序功能

代码如下:

list = roleservice.findAll();
//paramString代表按那個字段排序, paramSortOrder是正或倒排序
 if (paramString != null) {
            Collections.sort(list, new Sort(paramString, paramSortOrder));
        }

public class Sort implements Comparator<Role> {
//實現比較
    private static final Logger log = LoggerFactory.getLogger(Sort.class);

    private String sortField;

    private SortOrder sortOrder;

    public Sort(String sortField, SortOrder sortOrder) {
        this.sortField = sortField;
        this.sortOrder = sortOrder;
    }

    public int compare(Role car1, Role car2) {
        try {
            Object value1 =Role.class.getField(this.sortField).get(car1);
            Object value2 = Role.class.getField(this.sortField).get(car2);

            int value = ((Comparable) value1).compareTo(value2);

            return SortOrder.ASCENDING.equals(sortOrder) ? value : -1 * value;
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }
}



Role 有3個字段,一個是Long型ID,2個是String。代碼都是照搬primeface 的DEMO的

http://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml

現在問題是在頁面點擊排序是沒有反應,後臺發現程序拋出了異常

各位大神能幫忙看下是什麼問題嗎?說到底就是實現一個list按對象某個屬性排序,要怎麼寫更好一點?


返回顶部
顶部