SpringBoot聚合项目:达内知道(十)-开发新增评论功能
2021/9/2 23:11:15
本文主要是介绍SpringBoot聚合项目:达内知道(十)-开发新增评论功能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 开发新增评论功能
我们已经完成了讲师回复和显示讲师回答列表的功能,首先明确问题-->回答-->评论的关系:
-
一个问题可以有多个回答
-
一个回答可以有多个评论
-
评论直接关联回答id,和问题没有关系
1.1 为comment表添加用户昵称列
我们可以通过sql语句在不删除当前表的前提下为表新增列,comment表中没有用户昵称列,这样显示数据非常不方便,甚至需要连表查询,所以我们新增用户昵称列,sql语句如下:
-- 为指定表新增列的代码 ALTER TABLE comment ADD COLUMN user_nick_name VARCHAR(255) AFTER user_id -- 编写修改语句,将用户对应的昵称赋值 UPDATE comment c SET user_nick_name=( SELECT nickname FROM user u WHERE u.id=c.user_id )
经过上面操作,我们的comment表中就新增了user_nick_name列,并赋上了对应的昵称值。数据库列变化了,那么对应数据库的实体类也已经要新增一个属性。
Comment实体类新增属性如下:
/** * 用户昵称 */ @TableField("user_nick_name") private String userNickName;
1.2 编写新增评论的控制层
先创建一个新增评论用的Vo类CommentVo,代码如下:
@Data @Accessors(chain = true) public class CommentVo implements Serializable { @NotNull(message = "回答id不能为空") private Integer answerId; @NotBlank(message = "评论内容不能为空") private String content; }
编写控制器方法来接收表单提交的信息:
@RestController @RequestMapping("/v1/comments") @Slf4j public class CommentController { //不写("") 也可以,这个方法映射/v1/comments的请求 @PostMapping public Comment postComment( @Validated CommentVo commentVo, BindingResult result, @AuthenticationPrincipal UserDetails user){ log.debug("接收到表单信息:{}",commentVo); if(result.hasErrors()){ String msg=result.getFieldError().getDefaultMessage(); throw new ServiceException(msg); } return null; } }
1.3 编写页面的绑定
在detail_teacher.html页面修改代码:
<p class="text-left text-dark"> <a class="btn btn-primary mx-2" href="#">采纳答案</a> <a class="btn btn-outline-primary" data-toggle="collapse" href="#collapseExample1" role="button" aria-expanded="false" aria-controls="collapseExample" :href="'#addComment'+answer.id" ><!--修改href--> <i class="fa fa-edit"></i>添加评论 </a> </p> <div class="collapse" id="collapseExample1" :id="'addComment'+answer.id"><!--修改id--> <div class="card card-body border-light"> <form action="#" method="post" class="needs-validation" novalidate @submit.prevent="postComment(answer.id)"><!--阻止原有表单提交效果--> <div class="form-group"> <textarea class="form-control" name="content" rows="3" required></textarea> <div class="invalid-feedback"> 评论内容不能为空! </div> </div> <button type="submit" class="btn btn-primary my-1 float-right">提交评论</button> </form> </div> </div>
1.4 编写提交评论的js代码
在question_detail.js文件中的answersApp对象中新增一个方法:
postComment:function(answerId){ if(!answerId){ return } console.log(answerId); //获得输入框对象 let textarea=$("#addComment"+answerId+" textarea");//textarea前面一定要有空格:子孙后代选择器 let content=textarea.val(); if(!content){ alert("必须编写评论内容"); return; } let form=new FormData(); form.append("answerId",answerId); form.append("content",content); axios({ url:"/v1/comments", method:"post", data:form }).then(function(response){ console.log(response.data); }) }
这篇关于SpringBoot聚合项目:达内知道(十)-开发新增评论功能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南