在使用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语法就不过多赘述。