您现在的位置是:首页 > java技术交流java技术交流
springboot使用递归获取导航无限级分类 使用thymeleaf渲染导航栏
上善若水2020-06-10 18:13:57【java技术交流】 2958人已围观
简介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)
相关文章
随机图文
-
js中使用 encodeURI "#"井号出错 #号后参数被截取
js中使用 encodeURI将请求参数转码试,,#井号出错,#后的字符串不能正常进行转码,后台无法正确处理参数 解决方法:将encodeURI 替换成encodeURIComponent函数即可. -
有趣的笑话,3秒逗乐不开心的你
1、睡不着,在数羊的时候,突然有一只小羊站了出来对我说“请你用心一点,你已经数过我一次了。 2、我叫晴晴 因为今天没有太阳所以我叫青青 3、如果长得太美就是犯罪的话,那我的颜值可能会让我无期徒刑。 4、晚睡等于慢性自杀,早起就是当场去世 5、心理学上有潜意识激励的说法。例如你每天早上出门前对着镜子说一句“你很棒”。一段时间后,那块镜子就会成为一块很棒的镜子。 6、“一块玻璃准备跳楼你猜他 -
setSessionIdUrlRewritingEnabled(false)不生效
Springboot在集成Shiro后,发现第一请求重定向会出现JSESSIONID,页面会出现400的错误,页面无法正常显示在设置了setSessionIdUrlRewritingEnabled(f -
spriingboot之mybatis 多对多关联查询
上一篇演示i了一对多关联,在此基础上稍作修改就能完成多对多关联操作,入门知识点之使用注解完成多对多的配置. 表结构我们有三张表用户表用户组表用户与用户组中间表 用户表与中间表一对多关系用户组