三级分类bug解决
文章目录
- 前端
- 后端
前端
<!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)) // 使用 equals 比较 Integer,避免 NullPointerException.collect(Collectors.toList());// 如果需要返回 null 而不是空列表,可以添加以下判断:// if (result.isEmpty()) return null; else return result;
}
相关文章:
三级分类bug解决
文章目录 前端后端 前端 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org" lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…...
AxiosError: Network Error
不知怎么的,项目还在开发阶段,之前还好好的,玩儿了两天再一打开发现页面无法显示数据了,报错如下: 我以为是后端出问题了,但是后端控制台无报错,又用postman测试了一下,可以获取到数…...
CDefFolderMenu_MergeMenu函数分析之添加了分割线和属性菜单项两项
CDefFolderMenu_MergeMenu函数分析之添加了分割线和属性菜单项两项 第一部分: void CDefFolderMenu_MergeMenu(HINSTANCE hinst, UINT idMainMerge, UINT idPopupMerge, QCMINFO *pqcm) { UINT idMax pqcm->idCmdFirst; if (idMainMerge) { HME…...
mysql的源码包安装
安装方式一:(编译好的直接安装) 1.添加一块10G的硬盘,给root逻辑卷扩容 (下面安装方式二有,一模一样的装就行,我就不写了,再写的话篇幅就太长了) 2.下载编译好的源码包…...
win11系统无法打开软件_组策略无法打开_gpedit.msc不生效_为了对电脑进行保护,已经阻止此应用---Windows工作笔记057
碰到这个问题挺麻烦的,要用的软件打不开了. 其实解决方法就是去组策略中修改一个策略就可以了,但是: 先来说: 而且,使用cmd输入的gpedit.msc也打不开了. 这个怎么解决? @echo off pushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPo…...
【JAVA】io流之缓冲流
①BufferedInputStream、BufferedOutputStream(适合读写非普通文本文件) ②BufferedReader、BufferedWriter(适合读写普通文本文件。) 缓冲流的读写速度快,原理是:在内存中准备了一个缓存。读的时候从缓存中…...
from flask_session import Session 为什么是Session(app)这么用?
在 Flask 中,from flask_session import Session 和 Session(app) 的用法是为了配置和使用 Flask-Session 扩展,将用户的会话(Session)数据存储到服务器端(如 Redis、数据库或文件系统),而不是默…...
AI赋能的未来城市:如何用智能化提升生活质量?
这会是我们憧憬的未来城市吗? 随着技术的不断进步和城市化进程的加速,现代城市面临着诸多挑战——交通拥堵、环境污染、能源消耗、人口老龄化等问题愈发突出。为了应对这些挑战,建设智慧城市已成为全球发展的重要趋势。在这一进程中…...
【Go】Go wire 依赖注入
1. wire 简介 wire 是一个 Golang 的依赖注入框架(类比 Spring 框架提供的依赖注入功能) ⭐ 官方文档:https://github.com/google/wire 这里关乎到编程世界当中一条好用的设计原则:A用到了B,那么B一定是通过依赖注入的…...
深度集成DeepSeek与Java开发:智能编码新纪元全攻略 [特殊字符]
一、DeepSeek:Java开发者的第二大脑 🧠 1.1 传统开发痛点VS智能开发体验 传统开发DeepSeek智能辅助效率提升对比手动编写重复代码一键生成模板代码代码量减少70%↑调试全靠断点日志智能定位缺陷根源问题排查时间缩短60%↓文档维护耗时费力自动生成更新…...
WEB前端将指定DOM生成图片并下载最佳实践(html2canvas)
前言: html2canvas 是一个 JavaScript 库,其主要作用是将 HTML 元素或其部分内容渲染为 Canvas 图像。通过它,开发者可以将网页中的任意 DOM 元素(包括文本、图片、样式等)转换为图片格式(如 PNG 或 JPEG&…...
掌握.NET Core后端发布流程,如何部署后端应用?
无论你是刚接触.NET Core的新手还是已有经验的开发者,在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践,帮助你高效顺利地将.NET Core后端应用部署到生产环境中 目录 程序发布操作 Docker容器注册表 文件夹发布 导入配置文件 网站运行操作 …...
深度学习学习笔记(34周)
目录 摘要 Abstracts 简介 Hourglass Module(Hourglass 模块) 网络结构 Intermediate Supervision(中间监督) 训练过程细节 评测结果 摘要 本周阅读了《Stacked Hourglass Networks for Human Pose Estimation》…...
C++ 设计模式-备忘录模式
游戏存档实现,包括撤销/重做、持久化存储、版本控制和内存管理 #include <iostream> #include <memory> #include <deque> #include <stack> #include <chrono> #include <fstream> #include <sstream> #include <ct…...
TOGAF之架构标准规范-信息系统架构 | 应用架构
TOGAF是工业级的企业架构标准规范,信息系统架构阶段是由数据架构阶段以及应用架构阶段构成,本文主要描述信息系统架构阶段中的应用架构阶段。 如上所示,信息系统架构(Information Systems Architectures)在TOGAF标准规…...
第一届网谷杯
统计四场的所有题目(共计12题,四场比赛一共上了21题【包括换题】) 随便记记,以免老题复用(已经复用了) Web 文件包含 1 伪协议 http://120.202.175.143:8011/?cphp://filter/convert.base64-encode/reso…...
Linux(ubuntu) GPU CUDA 构建Docker镜像
一、创建Dockerfile FROM ubuntu:20.04#非交互式,以快速运行自动化任务或脚本,无需图形界面 ENV DEBIAN_FRONTENDnoninteractive# 安装基础工具 RUN apt-get update && apt-get install -y \curl \wget \git \build-essential \software-proper…...
mysql -DQL语句和DCL语句
DQL 数据查询语言(Data Query Language,DQL)是数据库操作语言的重要组成部分,主要用于从数据库中检索数据,核心关键字为SELECT。以下从语法结构、常见操作及示例等方面详细介绍: 语法结构 DQL 的标准语法…...
掌握 ElasticSearch 组合查询:Bool Query 详解与实践
掌握 ElasticSearch 组合查询:Bool Query 详解与实践 一、引言 (Introduction)二、Bool 查询基础2.1 什么是 Bool 查询?2.2 Bool 查询的四种子句2.3 语法结构 三、Bool 查询的四种子句详解与示例3.1 must 子句3.2 filter 子句3.3 should 子句3.4 must_no…...
C++ 类和对象(友元、内部类、匿名对像)
目录 一、前言 二、正文 1.友元 1.1友元函数的使用 1.1.1外部友元函数可访问类的私有成员,友员函数仅仅是一种声明,他不是类的成员函数。 1.1.2一个函数可以是多个类的友元函数 2.友元类的使用 2.1什么是友元类 2.2 友元类的关系是单向的&#x…...
【Agent-阿程】AI先锋杯·14天征文挑战第14期-第13天-OpenClaw云记忆工作原理全拆解
【Agent-阿程】AI先锋杯14天征文挑战第14期-第13天-OpenClaw云记忆工作原理全拆解一、前言:读懂云记忆工作原理,玩转OpenClaw持久化记忆1.1 原理解读意义1.2 核心前提说明二、OpenClaw云记忆整体底层架构2.1 核心定位2.1.1 底层技术支撑2.1.2 整体架构总…...
保姆级教程:在Ubuntu 20.04上搞定GAMIT/GLOBK 10.7安装(含gfortran版本避坑指南)
保姆级教程:在Ubuntu 20.04上搞定GAMIT/GLOBK 10.7安装(含gfortran版本避坑指南) 如果你正在Ubuntu 20.04上尝试安装GAMIT/GLOBK 10.7,却因为各种依赖问题和版本冲突而头疼不已,那么这篇教程就是为你准备的。作为一款强…...
让Ouster OS1-128雷达跑通LeGO-LOAM建图:关键参数修改与‘ring‘字段报错解决
Ouster OS1-128雷达与LeGO-LOAM深度适配实战指南 当128线激光雷达遇上轻量级SLAM算法,会碰撞出怎样的火花?作为自动驾驶和机器人领域的热门硬件,Ouster OS1-128凭借其紧凑体积和高分辨率点云,正在逐步替代传统Velodyne设备。但真正…...
暗黑2自动化终极指南:告别手动刷怪,用Botty轻松获取稀有装备
暗黑2自动化终极指南:告别手动刷怪,用Botty轻松获取稀有装备 【免费下载链接】botty D2R Pixel Bot 项目地址: https://gitcode.com/gh_mirrors/bo/botty 还在为暗黑2中重复刷怪感到疲惫吗?Botty是一款专为《暗黑破坏神2:重…...
从设计到测试:聊聊DFT工程师如何在芯片里‘埋’下Scan-FF这根‘暗线’
从设计到测试:DFT工程师如何精准部署Scan-FF技术链 在芯片设计的世界里,可测试性设计(DFT)就像给复杂电路装上"透视镜",而Scan-FF技术则是这面镜子的核心光学组件。当一颗芯片包含数十亿晶体管时,…...
从零到一:基于NUC980DK61YC自制开发板的完整流程与避坑指南
从零到一:基于NUC980DK61YC自制开发板的完整流程与避坑指南 当市面上标准开发板无法满足定制需求时,自制开发板成为嵌入式开发者的终极解决方案。NUC980系列以其ARM926EJ-S核心和丰富外设资源,在工业物联网领域占据独特优势。本文将带你完整走…...
免费提升英雄联盟游戏效率90%的终极工具:League Akari完整指南
免费提升英雄联盟游戏效率90%的终极工具:League Akari完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款…...
别再混淆了!光学检测中PV、RMS、标准差到底怎么算?手把手教你用Excel验证Zemax结果
光学检测核心指标实战指南:从Excel验证到Zemax结果解析 在光学元件加工与检测领域,面形误差的量化评估直接关系到成像系统的最终性能。当我们拿到一份检测报告或仿真数据时,那些看似简单的PV、RMS数值背后,其实隐藏着复杂的计算逻…...
Windows 10 下 Node.js 16.15.1 保姆级安装与环境变量配置(含 npm 报错解决)
Windows 10 下 Node.js 16.15.1 完整安装与深度配置指南 对于刚接触 Node.js 开发的 Windows 用户来说,从零开始搭建开发环境往往会遇到各种"坑"。本文将带你一步步完成 Node.js 16.15.1 LTS 版本的安装、环境变量配置以及常见问题的解决方案,…...
告别密码焦虑!手把手教你用KeePass搭建个人专属密码库(附汉化与插件配置)
告别密码焦虑!手把手教你用KeePass搭建个人专属密码库 你是否经常忘记各种网站的登录密码?或者为了安全使用不同的复杂密码,结果最后自己都记不清哪个密码对应哪个网站?又或者担心把密码记录在笔记本或手机备忘录里不够安全&#…...
