帖子详情(十)

在帖子标题上增加访问详情页面的链接

一、业务层

DiscussPostService添加根据id查找帖子的方法。

public interface DiscussPostService extends IService<DiscussPost> {
    //...
    DiscussPost findDiscussPostById(int id);
}

DiscussPostServiceImpl通过 MyBatis Plus 实现。

@Service
public class DiscussPostServiceImpl extends ServiceImpl<DiscussPostMapper, DiscussPost>
    implements DiscussPostService{
    @Override
    public DiscussPost findDiscussPostById(int id) {
        return getById(id);
    }
  }

二、表现层

将帖子内容放到模板中。

@Controller
@RequestMapping("/discuss")
public class DiscussPostController implements CommunityConstant {
// ...
    @RequestMapping(path = "/detail/{discussPostId}", method = RequestMethod.GET)
    public String getDiscussPost(@PathVariable("discussPostId") int discussPostId, Model model) {
        // 帖子
        DiscussPost post = discussPostService.findDiscussPostById(discussPostId);
        model.addAttribute("post", post);
        // 作者
        User user = userService.findUserById(post.getUserId());
        model.addAttribute("user", user);
        // 将来处理评论
        return "/site/discuss-detail";
    }
}

三、模板处理

1.给帖子标题添加超链接

index.html

<a th:href="@{|/discuss/detail/${map.post.id}|}" th:utext="${map.post.title}">帖子标题</a>

鼠标放在标题上时会显示入下的超链接

2.处理帖子详情页

discuss-detail.html

<!-- 无关内容省略-->
<span th:utext="${post.title}">帖子标题</span>
<img th:src="${user.headerUrl}" class="align-self-start mr-4 rounded-circle user-header" alt="用户头像" >
<div class="mt-0 text-warning" th:utext="${user.username}">用户名</div>
<b th:text="${#dates.format(post.createTime,'yyyy-MM-dd HH:mm:ss')}">创建时间</b>
<div class="mt-4 mb-3 content" th:utext="${post.content}">帖子内容</div>
posted @   DaleLee  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示