I have made a similar infinite-level menu tree before. I will briefly talk about my ideas and you can try it to see if it can be realized. Mainly through Map+递归 realizing layer-by-layer nesting, and then I think it can be used for one-level The reply is paginated. You can refer to the structural part of the code:
public class ResourceTree {
public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();
public List<Resource> menuCommon;
public List<Object> list = new ArrayList<Object>();
public List<Object> menuList(List<Resource> resource) {
this.menuCommon = resource;
for (Resource x : resource) {
Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
if (x.getParentId() == 0) {
mapArr.put("id", x.getId());
mapArr.put("text", x.getResourceName());
mapArr.put("resourceUrl", x.getUrl());
mapArr.put("resourceParent", x.getParentId());
mapArr.put("resourceType", x.getType());
mapArr.put("resourceTag", x.getResourceCode());
// mapArr.put("resourceIcon", x.getResourceIcon());
// mapArr.put("resourceParentPath", x.getResourceParentPath());
mapArr.put("children", menuChild(x.getId()));
list.add(mapArr);
}
}
return list;
}
public List<?> menuChild(int id) {
List<Object> lists = new ArrayList<Object>();
for (Resource a : menuCommon) {
Map<String, Object> childArray = new LinkedHashMap<String, Object>();
if (a.getParentId() == id) {
childArray.put("id", a.getId());
childArray.put("text", a.getResourceName());
childArray.put("resourceUrl", a.getUrl());
childArray.put("resourceParent", a.getParentId());
childArray.put("resourceType", a.getType());
childArray.put("resourceTag", a.getResourceCode());
// childArray.put("resourceIcon", a.getResourceIcon());
// childArray.put("resourceParentPath", a.getResourceParentPath());
childArray.put("children", menuChild(a.getId()));
lists.add(childArray);
}
}
return lists;
}
}
First find out the ID array of each page according to the conditions. Use your paging method
Then use the ID array to query the detailed data you need
I have made a similar infinite-level menu tree before. I will briefly talk about my ideas and you can try it to see if it can be realized.
Mainly through
Map+递归realizing layer-by-layer nesting, and then I think it can be used for one-level The reply is paginated. You can refer to the structural part of the code: