谷粒商城第十天-分组新增级联显示商品分类分组修改级联回显商品分类

目录

一、总述

二、前端实现

三、后端实现

四、总结


一、总述

本次就是一个小的优化。

就是分组新增或者是修改的时候,直接显示商品分类的id可读性不高,新增的时候需要填写对商品分类的id,修改的时候,就只是给你一个商品分类的数字,并不能直接显示到底是什么分类。

那有什么办法可以解决这个问题呢?

elementUI中的级联选择器可以解决这个问题。

二、前端实现

前端这里就是一个级联选择器这个组件的使用,翻阅文档,知道哪些参数,如何配置就行了

下图是elementUI中的级联选择器:

 复制这个直接到我们的分组组件中,在新增/删除对话框那里,将所属分类id下面的内容进行替换

 在数据域中声明好相关的属性:

需要正确将分类数据显示出来的话,就需要在页面打开的时候就获取到分类数据,放到categorys中:

 通过上述步骤,基本上就能显示了 ,但是会出现最后一级的分类是空的情况,这是由于这个级联组件可不管你的children集合里面没有元素,只要存在这个就渲染,空的也渲染,只是显示空白,没有数据罢了。

那么需要怎么办呢?

其实很简单,就是将后端返回的对应的那个实体类,在children字段上面加上注解,加上:

@JsonInclude(JsonInclude.Include.NON_EMPTY)

 

代表一但为空的话,这里的为空空集合也包括了,就不将这个字段以json返回给前端。

 到现在的话,在新增的时候就能级联显示分类信息了:

当然这里选择的话,最终给我们的数据是,从父到孙的分类id数组,而我们最终提交的时候,只需要提交最后一级的分类id就行了,因此需要在提交之前做一下处理,修改表单中的绑定的分类值:

那修改的时候,怎样还以这种级联的方式进行回显呢?

其实很简单,我们知道刚刚选择了最终我们得到的数据是"父-子-孙"的分类id数组,反正有这个数据,级联组件就能正确的进行显示。

那么现在思路其实就已经出来了,就是点击修改按钮的时候,前端肯定要向后端请求分组数据,只需要分组数据中携带好分类id的完整路径即可,然后将这个完整路径设置给数据域中的categoryIds,又因为这个categoryIds和级联组件进行了绑定,因此此时级联组件就能按照这个路径进行级联显示了。

所以现在只需要在后端携带好这个路径,然后在前端绑定好就行了。

后端携带这个路径是后端的事情,在后端实现中进行说明,现在直接说一下绑定:

三、后端实现

在新增分组信息的后端没什么好说的,都不需要修改什么。

只是这个修改分组时因为需要将分类信息以级联的方式进行回显,而级联回显依赖的是分类路径。

所以这里后端主要是对分类信息获取接口改进一下,就是新增一个分类路径进行返回

1. controller

2. service

service接口:

public interface IAttrGroupService extends IService<AttrGroup> {AttrGroupVo getDetailGroup(Long attrGroupId);
}

service实现:

@Service
public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupMapper, AttrGroup> implements IAttrGroupService {@Autowiredprivate ICategoryService categoryService;@Overridepublic AttrGroupVo getDetailGroup(Long attrGroupId) {AttrGroup group = getById(attrGroupId);AttrGroupVo attrGroupVo = new AttrGroupVo();BeanUtils.copyProperties(group,attrGroupVo);Long[] path = categoryService.categoryPath(group.getCatelogId());attrGroupVo.setCategoryPath(path);return attrGroupVo;}
}

这是分组这里,主要还是分类那里通过分类id获取其完整路径的核心方法:

service:

接口:

 实现:

@Overridepublic Long[] categoryPath(Long categoryId) {List<Long> path = new ArrayList<>();List<Long> categoryPath = path(categoryId, path);Collections.reverse(categoryPath);return categoryPath.toArray(new Long[categoryPath.size()]);}private List<Long> path(Long categoryId,List<Long> path){path.add(categoryId);Category category = getById(categoryId);Long parentCid = category.getParentCid();if(parentCid!=0){path(parentCid,path);}return path;}

四、总结

前端的话就是一个级联组件的使用,后端的话主要是分类路径的获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net6 Web Core API --- AOP -- log4net 封装 -- MySQL -- txt

目录 一、引入 NuGet 包 二、配置log4net.config 三、编写Log4net封装类 四、编写日志记录类 五、AOP -- 拦截器 -- 封装 六、案例编写 七、结果展示 一、引入 NuGet 包 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore MySql.Data ---- MySQL…

WPF上位机8——C#与MySQL

ADO.NET 数据库连接 数据插入、删除、更改 数据查询 带单个参数 带多个参数 using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Wp…

JVM、JRE、JDK三者之间的关系

JVM、JRE和JDK是与Java开发和运行相关的三个重要概念。 再了解三者之前让我们先来了解下java源文件的执行顺序&#xff1a; 使用编辑器或IDE(集成开发环境)编写Java源文件.即demo.java程序必须编译为字节码文件&#xff0c;javac(Java编译器)编译源文件为demo.class文件.类文…

nginx优化与防盗链

nginx优化&#xff1a; 1隐藏版本号&#xff1a; 方法一 修改配置文件方式 vim /usr/local/nginx/conf/nginx.conf http { include mime.types; default_type application/octet-stream; server_tokens off; vim /usr/local/nginx/conf/nginx.c…

Python入门自学进阶-Web框架——38、redis、rabbitmq、git

缓存数据库redis&#xff1a; NoSQL&#xff08;Not only SQL&#xff09;泛指非关系型的数据库。为了解决大规模数据集合多重数据类的挑战。 NoSQL数据库的四大分类&#xff1a; 键值&#xff08;Key-Value&#xff09;存储数据库列存储数据库文档型数据库图形&#xff08;…

【Linux 网络】网络层协议之IP协议

IP协议 IP协议所处的位置网络层要解决的问题IP协议格式分片与组装网段划分特殊的IP地址IP地址的数量限制私网IP地址和公网IP地址路由 IP协议所处的位置 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。 网络层要解决的问题 网络…

Docker搭建zookeeper

问题背景 前言 本文参考自&#xff1a;docker-compose快速搭建Zookeeper集群还有一种更加详细更加全面的部署方式&#xff1a;Docker之docker-compose一键部署Zookeeper集群&#xff0c;但笔者还未验证&#xff0c;先记录下来 搭建 安装docker-ce 此处不赘述 安装docker-co…

javaweb监听和渲染技术

jsp入门使用 <% page import"java.io.PrintWriter" %> <%-- Created by IntelliJ IDEA.--%> <%-- User: 韩顺平--%> <%-- jsp的模板如何定制&#xff0c;一会再说明--%> <%-- To change this template use File | Settings | File T…

使用gpt对对话数据进行扩增,对话数据扩增,数据增强

我们知道一个问题可以使用很多方式问&#xff0c;但都可以使用完全一样的回答&#xff0c;基于这个思路&#xff0c;我们可以很快的扩增我们的数据集。思路就是使用chatgpt或者gpt4生成类似问题&#xff0c;如下&#xff1a; 然后我们可以工程化这个过程&#xff0c;从而快速扩…

【JAVA】数组

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 数组 1. 数组的基本概念1.1 为什么要使用…

Spring Boot整合ES的两种方式

使用Spring Data Elasticsearch Starter 在Spring Boot中整合Elasticsearch的方式之一是使用Elasticsearch的官方Spring Data Elasticsearch Starter。该Starter提供了对Elasticsearch的高级集成&#xff0c;简化了配置和管理Elasticsearch客户端。 下面是使用Spring Data E…

网关 GateWay 的使用详解、路由、过滤器、跨域配置

一、网关的基本概念 SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是&#xff1a; 反向代理&#xff08;请求的转发&#xff09; 路由和负载均衡 身份认证和权限控制 对请求限流 1.2 相比于Zuul的优势&#xff1a; SpringCloudGateway基于Spring5中…

javascript:js介绍初体验和变量以及数据类型的使用。

目录 一.介绍 1概念 2作用 3组成 二.js初体验 1.js的书写位置 a.行间引入 b.内部引入 c.外部引入​编辑 2.js的注释 3.js的结束符 4.输入输出语句 输出语法 输入语法 三.变量及数据类型 ​ 1.字面量 2.变量 ​编辑 变量的使用 ​编辑 let和var的区别…

在 Linux 上以 All-in-One 模式安装 KubeSphere

官方文档&#xff1a;https://www.kubesphere.io/zh/docs/v3.3/quick-start/all-in-one-on-linux/ 操作系统 最低配置 Ubuntu&#xff1a; 16.04,18.04, 20.04, 22.04 2 核 CPU&#xff0c;4 GB 内存&#xff0c;40 GB 磁盘空间Debian Buste&#xff1a;Stretch 2 核 CPU&am…

【严重】Smartbi商业智能BI软件权限绕过漏洞

漏洞描述 Smartbi 是一款商业智能应用&#xff0c;提供了数据集成、分析、可视化等功能&#xff0c;帮助用户理解和使用他们的数据进行决策。 在 Smartbi 受影响版本中存在权限绕过问题&#xff0c;未授权的攻击者可以通过 RMI 的方式调用 getPassword 接口获取管理员 token …

jQuery知识

DOM知识 alert(我是弹窗); prompt(弹窗输入);Dom元素节点获取 方式一&#xff1a;通过 id 获取 一个 元素节点&#xff08;为什么是一个呢&#xff1f;因为 id 是唯一的&#xff09; var div1 document.getElementById("box1"); 方式二&#xff1a;通过 标签名 获…

conda 环境 numpy 安装报错需要 Microsoft Visual C++ 14.0

到公司装深度学校环境。项目较旧&#xff0c;安装依赖&#xff0c;一堆报错&#xff08;基于 conda 环境&#xff09;&#xff1a; numpy 安装报需要 C 14.0 No module named numpy.distutils._msvccompiler in numpy.distutils; trying from distutilserror: Microsoft Visu…

预测知识 | 预测模型变量重要性、可视化及论文撰写指南

预测知识 | 预测模型变量重要性、可视化及论文撰写指南 目录 预测知识 | 预测模型变量重要性、可视化及论文撰写指南变量重要性模型可视化论文撰写指南参考资料 变量重要性 关于预测模型变量重要性&#xff0c;大家一定熟悉不过。但如下图所示&#xff0c;其展示上可有进一步优…

网络安全进阶学习第十三课——SQL注入Bypass姿势

文章目录 一、等号被过滤二、substr、mid等被过滤三、逗号被过滤四、and/or被过滤五、空格被过滤五、其他绕过方式 一、等号被过滤 1、like&#xff0c;rlike语句&#xff0c;其中rlike是正则2、大于号>&#xff0c;小于号<3、符号<>&#xff1a;<>为不等于…

飞凌OKMX6ULL-C开发板试用

开箱体验 主要配件包括&#xff1a;USB Type-C调试线、电源线、主板。 资源下载 开发环境 飞凌提供了制作好的ubuntu18.04的镜像&#xff0c;直接到网盘下载解压即可&#xff0c;VMWare的安装可以参考网上教程&#xff0c;这里不赘述。安装好VMWare后直接打开解压出来的ubu…