您现在的位置是:首页 > java技术交流java技术交流
springboot使用递归获取导航无限级分类 使用thymeleaf渲染导航栏
上善若水2020-06-10 18:13:57【java技术交流】 2945人已围观
简介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)
相关文章
随机图文
-
抖音笑话段子撩人套路
1、从今日开端我茹素,由于你是我的菜 2、你晓得泰语 撒那嘿呦是甚么意义吗? 我爱你 我也是 3、我觉得你今日怎样这么怪啊? 那里怪了? 怪好看的!! 4、美男,跟你问一下,那条路怎样走? 哪条路? 通往你内心的路 5、你有舆图吗? 怎样了? 我在你的眼睛里迷路了 6、哎,给你看一个美男? 甚么?_? 拿镜子照向她 7、你能够帮我洗个工具吗? 洗甚么? (洗)喜好我 8、你会模拟啄木鸟吗 会啊 来,把我的脸当作树 9、女:小哥哥,小哥哥,给你个工具你要吗? 男:甚么呀 -
历年出生人口(1949-2021)
先看一组人口出生数据:2019年:1465万2020:1200万2021年:1062万 1949年:1275万 1950年:1419万 1951年:1349万 1952年:1622万 1953年:1637万 1954年:2232万 -
5个最搞笑儿童笑话:欢迎收听肖邦和贝多芬合奏的东北大秧歌
1.一天,一对父子在收音机旁听音乐。儿子说:'萧邦的曲子真好听。'父亲大叫道:'笨蛋,这明明是贝多芬的交响曲。'就在他们争论不休时,收音机里的播音员说:'您刚才收听到的是东北大秧歌。'2.儿子:'妈,什么叫唯唯诺诺的人?'妈妈:'就是那些从不发表自己的意见,嘴里常说'对,对,对'的人。孩子他爸,我说得对吗?'爸爸:'对,对,对。'儿童笑话3.本地电视一个节目,主持人 -
linux 设置目录所属用户组 chown -R www:www /www/wwwroot/default
linux 设置目录所属用户组,我们经常需要将网站目录给设置成www用户组,每次老是忘记,只知道是chown命令例一:改变拥有者和群组命令:chown runoob:runoobgroup log1.