Java项目数据迭代两次导致点赞数重复显示问题排查求助
问题原因
你有两处逻辑错误导致出现重复点赞数显示的问题:
- Controller层
LikeCountHashMap的键值存储颠倒
你现在的存储逻辑是把点赞数作为键、帖子ID作为值,完全搞反了两者的映射关系,你需要的是通过帖子ID查询对应点赞数,所以应该把帖子ID设为键,点赞数设为值。 - Thymeleaf模板层错误遍历全量点赞Map
你在每个帖子的点赞数展示位置遍历了整个likeCountMap,自然会把所有帖子的点赞数都挨个输出到当前帖子下面。
修复代码
1. Controller层修改
找到Controller里的循环部分,修改LikeCount的存储逻辑:
for(ProfileDto GetLikeCount: GetUserWithPost) { Integer GetTotalLike = this.pojoService.getTotalLike(GetLikeCount.getPost_id()); // 把键值反过来,键存帖子ID,值存对应点赞数 LikeCount.put(GetLikeCount.getPost_id(), GetTotalLike); }
2. Thymeleaf模板层修改
删掉点赞区域的遍历逻辑,直接根据当前帖子ID从likeCount中取值即可:
<div class='like-style'> <!-- 去掉原有的遍历逻辑,直接根据当前post_id取对应点赞数 --> <span class='like-count' th:id='like-count + ${ExtractListOfSubData.post_id}' th:text="${likeCount.get(ExtractListOfSubData.post_id)}"></span> <label>like</label> </div>
修复完成后即可实现每个帖子只展示自身对应点赞数的效果。
内容的提问来源于stack exchange,提问作者Faheem azaz Bhanej
相关产品推荐
相关产品推荐

