控制树形菜单 or 递归 深度 层级

**

这个里面有BUG 仅供参考

**

本来系统里面的层级是所有显示出来,但是领导说要只显示第二层,然后就用js改成了默认显示第二层。后面的层级也可以点击出来,效果这里写图片描述,之后领导又提出了新的意见,说只能显示到到指定层级。并且可以在后台控制显示到第几层。当只显示到第指定层级时不显示下面的层级。效果
这里写图片描述
下面放出代码和实现思路。免得自己以后忘记了。

数据库添加层级字段
这里写图片描述
dao和service层 自己实现就行了。
下面是主要代码思路
定义全局变量,用于层深度记录
这里写图片描述
方法中初始化变量数值 , tier是获取数据库中存的值

		//初始化需要循环的层
		tier = titleService.findUrl("policiesregulations/rowadd.json").getTier();
		//深度
		x=0;

递归的时候进行判断深度

/**
	 * 树递归
	 * @param data 数据
	 * @param url 正常url
	 * @param last 末级节点url
	 * @return
	 */
	public List<Tree> recursion(List<PoliciesRegulations> data, String url,String last){
		List<Tree> tlist=new ArrayList<>();
		if(x<tier){
		data.forEach(e->{
			//判断是否为末级节点,切换不同的url
			String href = e.getLast()==0?url:last;
			href+=e.getId();
			Tree tls = new Tree();
			tls.setName(e.getName());
			tls.setTitle(e.getName());
			tls.setId(e.getId());
			tls.setHref(href);
			if(e.getPoliciesRegulations().size()==0){//2018年9月12日修改,如果不X--的话会导致第一层下标1之后的数据不迭代
				x--;
			}else{
				//深度++
				x++;
				tls.setChildren(recursion(e.getPoliciesRegulations(),url,last));
			}
			tlist.add(tls);
		});
		return null;
	}

猜你喜欢

转载自blog.csdn.net/a961011576/article/details/82110543