前端
< ! 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 ( ) ) ;
}