尚品汇-前端面包屑平台属性、排序处理(三十三)

目录:

(1)面包屑处理平台属性

(2)排序处理

(2)单点登录业务介绍

(1)面包屑处理平台属性

前端显示:面包屑显示效果

搜list搜索方法继续添加返回的平台属性代码: 

前台页面数据展示:/*** 处理平台属性条件回显* @param props* @return*/
// 处理平台属性
private List<Map<String, String>> makeProps(String[] props) {List<Map<String, String>> list = new ArrayList<>();// 2:v:nif (props!=null && props.length!=0){for (String prop : props) {//prop  props=23:4G:运行内存  属性id:属性值名称;属性名称   prop.split(“:”)也可以用StringUtils查分String[] split = StringUtils.split(prop, ":");if (split!=null && split.length==3){// 声明一个mapHashMap<String, String> map = new HashMap<String,String>();map.put("attrId",split[0]);map.put("attrValue",split[1]);map.put("attrName",split[2]);list.add(map);}}}return list;
}
@GetMapping("list.html")
public String search(SearchParam searchParam, Model model) {Result<Map> result = listFeignClient.list(searchParam);model.addAllAttributes(result.getData());//拼接urlString urlParam = makeUrlParam(searchParam);//处理品牌条件回显String trademarkParam = this.makeTrademark(searchParam.getTrademark());//处理平台属性条件回显List<Map<String, String>> propsParamList = this.makeProps(searchParam.getProps());model.addAttribute("searchParam",searchParam);model.addAttribute("urlParam",urlParam);model.addAttribute("trademarkParam",trademarkParam);model.addAttribute("propsParamList",propsParamList);return "list/index";
}

页面处理

关键字
<ul class="fl sui-breadcrumb"><li><a href="#">全部结果</a></li><li  class="active"><span th:text="${searchParam.keyword}"></span></li></ul>
品牌处理
<ul class="fl sui-tag"><li th:if="${searchParam.trademark != null}" class="with-x"><span th:text="${trademarkParam}"></span><a th:href="@{${#strings.replace(urlParam,'trademark='+searchParam.trademark,'')}}">×</a></li></ul>
说明:urlParam里面已经包含品牌参数,该链接必须去除该参数,所以我们可以使用thymeleaf 字符串替换函数,把品牌参数替换了就可以了,${#strings.replace(urlParam,'trademark='+searchParam.trademark,'')}平台属性处理
<ul class="fl sui-tag"><li th:if="${searchParam.props != null}" th:each="prop : ${propsParamList}" class="with-x"><span th:text="${prop.attrName}+':'+${prop.attrValue}"></span><a th:href="@{${#strings.replace(urlParam+'&order='+searchParam.order,'props='+prop.attrId+':'+prop.attrValue+':'+prop.attrName,'')}}">×</a></li></ul>
说明:与品牌一样,替换掉对应的平台属性值即可
${#strings.replace(urlParam,'props='+prop.attrId+':'+prop.attrValue+':'+prop.attrName,'')}

(2)排序处理

ListController

ListController
/*** 处理排序* @param order* @return*/
private Map<String, Object> dealOrder(String order) {Map<String,Object> orderMap = new HashMap<>();if(!StringUtils.isEmpty(order)) {//order=1:descString[] split = StringUtils.split(order, ":");if (split != null && split.length == 2) {// 传递的哪个字段orderMap.put("type", split[0]);// 升序降序orderMap.put("sort", split[1]);}}else {orderMap.put("type", "1");orderMap.put("sort", "asc");}return orderMap;
}
@GetMapping("list.html")
public String search(SearchParam searchParam, Model model) {Result<Map> result = listFeignClient.list(searchParam);model.addAllAttributes(result.getData());//拼接urlString urlParam = makeUrlParam(searchParam);//处理品牌条件回显String trademarkParam = this.makeTrademark(searchParam.getTrademark());//处理平台属性条件回显List<Map<String, String>> propsParamList = this.makeProps(searchParam.getProps());//处理排序Map<String,Object> orderMap = this.dealOrder(searchParam.getOrder());model.addAttribute("searchParam",searchParam);model.addAttribute("urlParam",urlParam);model.addAttribute("trademarkParam",trademarkParam);model.addAttribute("propsParamList",propsParamList);model.addAttribute("orderMap",orderMap);return "list/index";
}

 

页面
<ul class="sui-nav"><li th:class="${orderMap.type == '1' ? 'active': ''}"><a th:href="${urlParam}+'&order=1:'+${orderMap.sort == 'asc' ? 'desc' : 'asc'}">综合<span th:if="${orderMap.type == '1'}" th:text="${orderMap.sort == 'asc' ? '↑' : '↓'}"></span></a></li><li th:class="${orderMap.type == '2' ? 'active': ''}"><a th:href="${urlParam}+'&order=2:'+${orderMap.sort == 'asc' ? 'desc' : 'asc'}">价格<span th:if="${orderMap.type == '2'}" th:text="${orderMap.sort == 'asc' ? '↑' : '↓'}"></span></a></li><li><a href="#">新品</a></li><li><a href="#">评价</a></li>
</ul>

说明:

      1,排序没有拼接到urlParam中,原因:如果拼接会重复出现

      2,为了保持排序条件,所以其他所有链接都需加上排序参数

改造其他连接

分页<a th:href="${urlParam}+'&pageNo='+${i}+'&order='+${searchParam.order}"><span th:text="${i}"></span></a>1,平台属性
<a th:href="${urlParam}+'&props='+${baseAttrInfo.attrId}+':'+${attrValue}+':'+${baseAttrInfo.attrName}+'&order='+${searchParam.order}" th:text="${attrValue}" >属性值111</a>
</li>2,品牌
<a th:href="${urlParam}+'&trademark='+${trademark.tmId}+':'+${trademark.tmName}+'&order='+${searchParam.order}" th:text="${trademark.tmName}">属性值111</a>
</li>
3,面包屑
<ul class="fl sui-tag"><li th:if="${searchParam.trademark != null}" class="with-x"><span th:text="${trademarkParam}"></span><a th:href="@{${#strings.replace(urlParam+'&order='+searchParam.order,'trademark='+searchParam.trademark,'')}}">×</a></li><li th:if="${searchParam.props != null}" th:each="prop : ${propsParamList}" class="with-x"><span th:text="${prop.attrName}+':'+${prop.attrValue}"></span><a th:href="@{${#strings.replace(urlParam+'&order='+searchParam.order,'props='+prop.attrId+':'+prop.attrValue+':'+prop.attrName,'')}}">×</a></li>
</ul>	

分页:

 <div class="fr page"><div class="sui-pagination pagination-large"><ul><li class="prev" th:if="${pageNo != 1}"><a th:href="${urlParam}+'&pageNo='+${pageNo - 1}+'&order='+${searchParam.order}">上一页</a></li><li class="prev disabled" th:if="${pageNo == 1}"><a href="javascript:">上一页</a></li><li th:each="i : ${#numbers.sequence(1,totalPages)}" th:class="${i == pageNo } ? 'active' : ''"><a th:href="${urlParam}+'&pageNo='+${i}+'&order='+${searchParam.order}"><span th:text="${i}"></span></a></li><li class="next" th:if="${pageNo < totalPages}"><a th:href="${urlParam}+'&pageNo='+${pageNo + 1}+'&order='+${searchParam.order}">下一页</a></li><li class="next disabled" th:if="${pageNo == totalPages}"><a href="javascript:">下一页</a></li></ul><div><span>共<span th:text="${totalPages }"></span>页&nbsp;</span><span></div></div></div>

 

(2)单点登录业务介绍

早期单一服务器,用户认证。

缺点:单点性能压力,无法扩展

分布式,SSO(single sign on)模式

解决 : 

用户身份信息独立管理,更好的分布式管理。

      可以自己扩展安全策略

      跨域不是问题

缺点:

     认证服务器访问压力较大。

业务流程图{用户访问业务时,必须登录的流程}{单点登录的过程}

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

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

相关文章

Lora 全文翻译

作者&#xff1a; 地点&#xff1a;hby 来源&#xff1a;https://arxiv.org/pdf/2106.09685 工具&#xff1a;文心 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 摘要 自然语言处理的一个重要范式包括在通用领域数据上进行大规模预训练&#xff0c;并适应特定任务或…

php 在app中唤起微信app进行支付,并处理回调通知

<?phpnamespace app\api\controller;use think\facade\Db; use think\facade\Log;class Wxzf {

什么是视频比特率?与视频时长是什么关系

​ ‌比特率是指单位时间内传输或处理的比特的数量&#xff0c;单位为‌bps(‌bit per second)。‌ 比特率经常用于描述在电信和计算领域中数据传输的速度&#xff0c;也可以作为衡量音频和视频文件数据率的指标。比特率越高&#xff0c;传送的数据越大&#xff0c;音频或视频…

Notion快速使用

探索Notion&#xff1a;全能笔记软件的新世界 1. 什么是Notion&#xff1f; 在数字化时代&#xff0c;一款集颜值与功能于一身的笔记软件无疑是学习与工作的得力助手。今天&#xff0c;我要向大家介绍的就是这样一款全能型选手——Notion。Notion不仅以其高颜值在众多笔记软件…

拟南芥中基因家族序列的提取

1.拟南芥基因组数据的下载 phytozome 是一个收录植物基因组数据的网站&#xff0c;数据整理比较规范&#xff0c;已 经提供了去除可变剪切的 cds 和 protein 序列文件。只有 gff3 文件需要 过滤处理 2. 对拟南芥的注释文件gff3文件进行ID处理&#xff0c;最终得到以下4个文件 …

【uni-app】使用天气API做一个天气APP(全过程)- 实况、逐小时、40日

头一次使用uni-app写代码, 现学现卖, 写的不好的地方见谅, 申请个appid就可以运行 切换城市界面比较简单, 城市名称需要符合天气api参数规则, 录入的城市不要带市区县; 格式如: 青岛、铁西、海淀、沛县 APP效果 功能说明 实况天气逐小时预报未来7日天气未来40日天气空气质量详…

C语言 | Leetcode C语言题解之第336题回文对

题目&#xff1a; 题解&#xff1a; #define SIZE 9470 #define N 168000 #define P 13331typedef unsigned long long ULL; ULL p[301];//p[i]存储P^ivoid init()//初始化p进制次幂数组 {int i;p[0]1;for(i1;i<300;i){p[i]p[i-1]*P;} }int** palindromePairs(char**words,…

探索 Resolume Arena 7 - 引领 VJ 音视频创作的卓越软件

Resolume Arena 7 是一款专为 Mac 和 Windows 系统设计的强大 VJ 音视频软件&#xff0c;为创意专业人士和爱好者提供了丰富而出色的功能。 这款软件拥有直观且用户友好的界面&#xff0c;即使对于初学者来说&#xff0c;也能快速上手并开始创作。其强大的媒体管理功能&#x…

SpringBoot事务-调度-缓存

一.Spring Boot中的事务管理 设置事务 Transactional(isolation Isolation.DEFAULT) Transactional(propagation Propagation.REQUIRED) 开启事务 EnableTransactionManagement 1. 开启事务管理 要开启 Spring 的事务管理&#xff0c;你需要在你的 Spring Boot 应用中添加 …

大数据技术现场工程师特色实训室解决方案

一、引言 在大数据时代背景下&#xff0c;数据已成为新的生产要素&#xff0c;驱动着各行各业的创新发展。面对这一趋势&#xff0c;市场对于既掌握大数据理论知识又具备实战能力的大数据技术人才的需求急剧增加。为了应对这一挑战&#xff0c;唯众精心设计了一套全面的大数据…

详解golang内存管理

介绍 要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。 操作系统内存管理 其实现在计算机内存管理的方式都是…

FPGA资源评估

FPGA资源评估 文章目录 FPGA资源评估前言一、资源评估1.1 资源有哪些1.2 资源统计 二、 FPGA 的基本结构三、 更为复杂的 FPGA 架构 前言 一、资源评估 大家在项目中一般会要遇到需要资源评估的情况&#xff0c;例如立了新项目&#xff0c;前期需要确定使用什么FPGA片子&…

RabbitMQ消息队列总结

RabbitMQ那些事 参考一. `RabbitMQ`介绍1.1 Java工程师1.1.1 RabbitMQ学习目标1.1.2 消息队列介绍1.1.3 RabbitMQ介绍各自属性介绍(❤❤❤)二. `RabbitMQ`安装1. 基于Linux1.1 安装1.2 常用命令1.3 后台管理开启与面板介绍三. 客户端`SDK`操作(❤❤了解)1. 客户端依赖1. 生产者…

Springboot实现doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频在线预览功能,你学“废”了吗?

最近工作中&#xff0c;客户需要生成包含动态内容的word/pdf报告&#xff0c;并且需要在线预览。 刚开始使用后台直接生成word文档&#xff0c;返回文件流给前端&#xff0c;浏览器预览会发生格式错乱问题&#xff0c;特别是文档中的图片有些还不显示。 想到最简单的办法就是…

alibabacloud学习笔记13

微服务Docker镜像打包讲解 父项目怎么springboot版本依赖 每个子模块项目添加依赖 添加构建文件&#xff1a; 微服务Docker镜像打包整合JDK11 服务根目录创建dockerFile文件. dockerFile的内容。 构建镜像( 去到子模块pom文件下)&#xff1a; 要下载这个才能使用本地docker.…

Nginx--简介、安装、常用命令和配置文件

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、Nginx简介 1、nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务&#xff0c;也是一个IMAP/POP3/SMTP服务。因它的稳定性、丰…

RPC 和 HTTP 理解

网上充斥着各类类似于这样的文章&#xff1a;rpc 比 http 快了多少倍&#xff1f;既然有了 http&#xff0c;为什么还要用 rpc 调用等等。遇到这类文章&#xff0c;说明对 http 和 rpc 是由理解误区的。 这里再次重复强调一遍&#xff0c;通信协议不是 rpc 最重要的部分&#x…

【OpenCV 】插值的方法原理,图片缩放,矫正,边界填充

图像旋转 缩放 计算机中的图像是以数组的方式储存&#xff0c;每个位置储存了像素点的像素值。对图像进行旋转缩放&#xff0c;就是对数组进行操作&#xff0c;乘以对应的矩阵&#xff0c;进行空间变换&#xff0c;而矩阵的行列式的值&#xff0c;就是缩放的倍数。 进行缩放旋…

Erupt 项目搭建

创建Spring Boot项目 Maven依赖 Spring Boot版本为 2.7.10&#xff0c;erupt版本为 1.12.14 erupt版本要与Spring Boot版本适配&#xff0c;3.x.x版本Spring Boot暂不适用说是 <properties><erupt.version>1.12.14</erupt.version></properties> <…

AR 眼镜之-开关机定制-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 开关机定制 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;开机 Logo 2&#xff09;开机音效 3&#xff09;开机动画 4&#xff09;关机动画 5&#xff09;关机弹窗 2. &#x1f4a0; 开机 Logo…