经过,我的不懈努力发现问题出现在
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 一般情况下都是接口返回的数据,可以让后台给你返回的时候就是排列好的 ,希望对大家有帮助