当前位置: 首页 > 工具软件 > SmartTable > 使用案例 >

SmartTable,Json转表格无法排序问题

杨腾
2023-12-01

经过,我的不懈努力发现问题出现在
 

  public T getData(Object o) throws NoSuchFieldException, IllegalAccessException {
        String[] fieldNames = fieldName.split("\\.");
        if (fieldNames.length >0) {
            Object child = o;
            for (int i = 0; i < fieldNames.length; i++) {
                if (child == null) {
                    return null;
                }
                Class childClazz = child.getClass();
                Field childField = childClazz.getDeclaredField(fieldNames[i]);
                if (childField == null) {
                    return null;
                }
                childField.setAccessible(true);
                if (i == fieldNames.length - 1) {
                    return (T) childField.get(child);

                } else {
                    child = childField.get(child);
                }
            }        }
        return  null;
    }


这里 因为你使用json 是转换成linkHasMap 而这边使用 泛型获取名称 肯定会报错,所以我在 TableParser类中的 sort 方法里做了一点修改

 List<Map<String, Object>> dataListmap = (List<Map<String, Object>>) dataList;
                Collections.sort(dataListmap, new Comparator<Map<String, Object>>(){

                    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                        Object omap1 = o1.get(sortColumn.getFieldName());
                        Object omap2 = o2.get(sortColumn.getFieldName());
                        if (omap1 instanceof Comparable) {
                            int i = ((Comparable) omap1).compareTo(omap2);
                            return  sortColumn.isReverseSort() ? -i : i;
                        }
                        return 0;
                    }

                });


因为使用 json 一般情况下都是接口返回的数据,可以让后台给你返回的时候就是排列好的 ,希望对大家有帮助

 类似资料: