您现在的位置是:首页 > java技术交流java技术交流
springboot使用递归获取导航无限级分类 使用thymeleaf渲染导航栏
上善若水2020-06-10 18:13:57【java技术交流】 2399人已围观
简介springboot使用递归获取导航无限级分类,使用thymeleaf渲染导航栏,在实际项目中经常会出现三级分类或者多级分类的情况,一般采用存pid的方式存储,在去数据时递归迭代下数据就行来看看导航栏
springboot使用递归获取导航无限级分类,使用thymeleaf渲染导航栏,在实际项目中经常会出现三级分类或者多级分类的情况,一般采用存pid的方式存储,在去数据时递归迭代下数据就行来看看导航栏递归实现吧!
项目的源代码:码云下载
由于更新的数据库字段和插入了部分数据,需要重新执行下码云的sql语句,同时重命名了文件夹mapper为dao.
1. 实体类增加children
public class Nav {
private Integer id;
private String title;
private String url;
private Integer sorts;
private Integer pid;
private Date createTime;
private Date updateTime;
private Boolean status;
private List<Nav> children;
2. NavServiceImpl增加递归格式化分类函数unlimitedTree
,格式成带children层级
@Service
public class NavServiceImpl implements NavService {
@Resource
private NavDao navDao;
@Override
public int deleteByPrimaryKey(Integer id) {
return 0;
}
@Override
public int insert(Nav record) {
return 0;
}
@Override
public Nav selectByPrimaryKey(Integer id) {
return null;
}
@Override
public List<Nav> selectAll() {
List<Nav> navs = navDao.selectAll();
return unlimitedTree(navs, 0);
}
@Override
public int updateByPrimaryKey(Nav record) {
return 0;
}
public static List<Nav> formatNavs(List<Nav> navs,List<Nav> navs_list,Integer pid) {
for (Nav nav:navs){
navs_list.add(nav);
List<Nav> childrenNavs=nav.getChildren();
if(null!=childrenNavs){
navs_list=formatNavs(childrenNavs,navs_list,nav.getPid());
}
}
return navs_list;
}
public static List<Nav> unlimitedTree(List<Nav> navs,Integer pid) {
ArrayList<Nav> navs_list =new ArrayList<>();
for (Nav nav:navs){
if(pid==nav.getPid()){
nav.setChildren(unlimitedTree(navs,nav.getId()));
navs_list.add(nav);
}
}
return navs_list;
}
}
3.IndexController查询出值
@Controller
public class IndexController {
@Resource
private NavService nav;
@GetMapping("/")
public String index(Model m) {
List<Nav> navs = nav.selectAll();
m.addAttribute("navs",navs);
return "index";
}
}
4.使用thymeleaf渲染显示数据
<nav>
<ul id="starlist">
<li><a href="index.html" title="首页">网站首页</a></li>
<li th:each="nav : ${navs}" th:class="${not #lists.isEmpty(nav.children)}?'menu'">
<a th:href="@{${nav.url}}" th:text="${nav.title}" href="index1.html">个人博客</a>
<ul th:if="${not #lists.isEmpty(nav.children)}" class="sub">
<li th:each="children : ${nav.children}">
<a th:href="@{${children.url}}" th:text="${children.title}" href="index1.html">CSS3|Html5</a>
</li>
</ul>
</li>
</ul>
</nav>
部分代码未完全贴出来,详细代码参考码云仓库代码!
Tags: springboot博客
很赞哦! (1)
相关文章
随机图文
-
springboot shiro实现登录跳转原先页面
在项目的会遇到请求后台页面会出现未登录跳转到登录页面,登录完成后再跳转回登录页面,又于项目登录是采用ajax编写的,只需在登录成功后将需要跳转的页面返回就可以.后台登录控制器 @PostMapping -
抖音上很火的10个笑话集锦
1、 父亲跟儿子说:儿子,你长大了,应该独立了。 儿子:如果我不独立呢? 父亲:不独立我就强迫你独立。 儿子:呜呜,爸爸你太残忍了,强迫我独立就是砍掉我一只脚的意思么? 父亲:…… 2、 A:我从来不吃鸭舌头,从鸭嘴里取出来的东西,多脏啊! B:那你吃什么呢? A:我要吃炒鸡蛋。 3、 A:中国有没有像印度那种演着演着就突然唱起来,然后里面的人又都像开挂一样厉害的影视作品? B:有啊,《新白娘子传奇》。 4、 快过年了,买了块粉土,想着把家里的墙都粉刷一遍,不料还差一点不够了。 老公:老婆, -
10个冷笑话,笑到肚子痛 看一次笑一整天
1.①你不能5分钟不眨眼。②你伸着舌头不能用鼻子呼吸。③你正在尝试第2个④第2个其实是可以的,但你像一条狗。⑤你在笑,因为你被耍了。2.火车上教授与农夫相对而坐。教授说:我出一题你若不知,给我五元;你出一题,我若不知,给你五百元,如何?农夫同意。教授:月亮距地球多远?农夫摇头递给教授五元钱。农夫问:上山三条腿下山四条腿,什么动物?教授苦思无解给五百元。农夫收钱欲睡觉 -
音乐人能看得懂的音乐笑话集锦
1.脱帽和戴帽一位意大利年轻作曲家,有一次请罗西尼听他演奏新作。罗西尼在听的时候,一连好几次把自己的帽子脱下戴上,戴上又脱下。年轻作曲家演奏结束后,问他为什么这样脱帽戴帽的。罗西尼回答说:“我有个习惯,每逢遇到老相识,总要脱帽招呼一下。”2.另一部好一个十分自信的青年人夹着两大本乐谱,来找罗西尼。年轻人:“指挥答应演奏我的两首交响乐中的一首,我想让您听一下哪一首