前端
< ! DOCTYPE html>
< html xmlns: th= "http://www.thymeleaf.org" lang= "en" >
< head>
< meta charset= "UTF-8" >
< meta name= "viewport" content= "width=device-width, initial-scale=1.0" >
< title> 分类展示页面< / title>
< ! -- 你可以在这里添加CSS 样式链接,例如: -- >
< ! -- < link rel= "stylesheet" href= "/css/styles.css" > -- >
< / head>
< body>
< ! -- 页面主体内容开始 -- >
< div class = "container" >
< ! -- 分类列表开始 -- >
< div class = "category-list" th: if = "${not #lists.isEmpty(categorys)}" >
< div class = "item" th: each= "category : ${categorys}" >
< h3>
< a href= "#" th: href= "@{/category/view(id=${category.id})}" th: text= "${category.name}" > 分类名称< / a>
< / h3>
< div class = "item-list clearfix" th: if = "${not #lists.isEmpty(category.category2VoList)}" >
< div class = "subitem" th: each= "category2 : ${category.category2VoList}" >
< dl class = "fore" th: if = "${not #lists.isEmpty(category2.category3VoList)}" >
< dt>
< a href= "#" th: href= "@{/category/view(id=${category2.id})}" th: text= "${category2.name}" > 子分类名称< / a>
< / dt>
< dd>
< em th: each= "category3 : ${category2.category3VoList}" >
< a href= "#" th: href= "@{/category/view(id=${category3.id})}" th: text= "${category3.name}" > 三级分类名称< / a>
< / em>
< / dd>
< / dl>
< ! -- 如果没有三级分类,显示占位符 -- >
< div th: unless= "${not #lists.isEmpty(category2.category3VoList)}" class = "no-subcategories" >
< p> 暂无三级分类< / p>
< / div>
< / div>
< ! -- 如果没有二级分类,理论上这里不应该进入这个分支,因为上面的th: if 已经检查了 -- >
< ! -- 但为了完整性,可以保留这个结构,并确保在数据准备时二级分类列表不为空 -- >
< / div>
< ! -- 如果确实需要处理没有二级分类的情况(尽管逻辑上不应该),可以这样写: -- >
< ! -- < div th: unless= "${not #lists.isEmpty(category.category2VoList)}" class = "no-subcategories" > -- >
< ! -- < p> 暂无二级分类< / p> -- >
< ! -- < / div> -- >
< / div>
< / div>
< ! -- 如果没有任何一级分类,显示占位符(这个通常不会在数据准备时发生,除非有特定逻辑) -- >
< div th: unless= "${not #lists.isEmpty(categorys)}" class = "no-categories" >
< p> 暂无分类信息< / p>
< / div>
< ! -- 分类列表结束 -- >
< / div>
< ! -- 页面主体内容结束 -- >
< ! -- 你可以在这里添加JavaScript 脚本链接,例如: -- >
< ! -- < script src= "/js/scripts.js" > < / script> -- >
< / body>
< / html>
后端
private List < CategoryEntity > getParentId ( List < CategoryEntity > selectList, Integer parentId) {
return selectList. stream ( )
. filter ( item -> item. getParentId ( ) . equals ( parentId) )
. collect ( Collectors . toList ( ) ) ;
}