bootdo增加多级菜单

在使用bootdo框架的时候,发现目录菜单只有一级,在此多加几级菜单

<!-- 根目录 -->
<li th:each="menu : ${menus}"><a href="#"> <i
                        class="fa fa fa-bar-chart-o" th:class="${menu.attributes.icon}"></i>
                    <span class="nav-label" th:text="${menu.text}">目录</span> <span
                            class="fa arrow"></span>
                </a>
			<!-- 在此添加子节点    分析 子节点会有目录和菜单两种情况 -->
			<ul class="nav nav-second-level">    
                    <!-- 遍历了每一个子菜单(二级) -->
                        
					<!--  判断是目录还是菜单    hasChildren这个判断更为直观 -->
                              				                       
                             <!-- 二级目录 --> 
                   				<li th:each="cmenu : ${menu.children}">   
                   							<!--有孩子  目录   class="nav-label"   <span class="fa arrow"></span>  -->
                   							<a  th:if=" ${cmenu.hasChildren} ">
                   								<i class="fa fa fa-bar-chart-o" th:class="${cmenu.attributes.icon}"></i>
					                       	<span class="nav-label" href="graph_echarts.html" th:text="${cmenu.text}"
					                             th:href="${cmenu.attributes.url}">系统管理</span>
					                       	<span class="fa arrow"></span>
					                   							
					                   		</a>
					                   							
                   							<!--无孩子  菜单  class="nav-label" -->
                   							<a  th:if=" !${cmenu.hasChildren} ">
                   								<i class="fa fa fa-bar-chart-o" th:class="${cmenu.attributes.icon}"></i>
					                       	<span class="J_menuItem" href="graph_echarts.html" th:text="${cmenu.text}"
					                             th:href="${cmenu.attributes.url}">系统管理</span>      							
					                   		</a>
					             </li>
			  </ul>

</li>

多级菜单css自己调整下,不擅长
这样就完成了菜单 ,三级节点继续添加,遍历cmenu.children
目录和菜单在数据库用不同的标志,由于框架封装的时候未带标志,在此用有没有子节点判断

在此看看封装树的源代码

public static <T> List<Tree<T>> buildList(List<Tree<T>> nodes, String idParam) {
		if (nodes == null) {
			return null;
		}
		List<Tree<T>> topNodes = new ArrayList<Tree<T>>();

		for (Tree<T> children : nodes) {

			String pid = children.getParentId();
			if (pid == null || idParam.equals(pid)) {
				topNodes.add(children);

				continue;
			}

			for (Tree<T> parent : nodes) {
				String id = parent.getId();
				if (id != null && id.equals(pid)) {
					parent.getChildren().add(children);
					children.setHasParent(true);
					parent.setChildren(true);

					continue;
				}
			}

		}
		return topNodes;
	}

将数据库中每条记录封装成list传递进来,参数传递根节点的父亲,一般是0;
外循环将根节点添加到了返回的新的list中,别的节点先记录其父亲编号(目的就是取出非根目录的父节点),然后内循环重新遍历list,找到这个“别的节点的父亲”,将自己添加到他这个父亲中。返回新的list
/-- 稍微有点混乱
简单说,就是先找到一个节点的父亲编号 ,然后根据这个编号去找到他的父亲,然后将自己添加到他这
个父亲里面

thymeleaf 判断表达式:

gt:great than(大于)>
ge:great equal(大于等于)>=
eq:equal(等于)==
lt:less than(小于)<
le:less equal(小于等于)<=
ne:not equal(不等于)!=
<a th:if=" 1 eq 1 "> 哈哈(显示)</a>
<a th:if=" 1 eq 2 "> 哈哈(不显示)</a>

thyneleaf语法就不过多赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值