Springboot + Mybatis博客项目 评论删除的bug怎么解决

avatar
@RequestMapping(path = "/deleteComment/{articleId}/{commentId}")
public String deleteComment(@PathVariable("articleId")int articleId,@PathVariable("commentId") int commentId,
                            @RequestParam("content")String content
        ,@RequestParam(value = "next",required = false)String next){
    if (hostHolder.getUser()==null)
        return "redirect:/in?next=/article/"+articleId;
    if(hostHolder.getUser().equals("SuperAdmin")){
        commentService.deleteComment(commentId);
    }
    return "redirect:/article/"+articleId;
}

前端代码:

<button  type="submit" class="btn btn-default"><a href="/deleteComment/$!{article.id}/$!{vo.comment.id}">删除</a></button>

点击button时参数可以解析 如: http://localhost/deleteComment/16/24
控制台显示界面404
大神们该怎么解决 ? 拼写应该没错

14 条评论
avatar
tomoya92 发布于 5 个月前
  0  

你前端代码这按钮直接写成这样就可以了

<a href="/deleteComment/$!{article.id}/$!{vo.comment.id}" class="btn btn-default">删除</a>

然后断点查看一下程序里代码的走向

avatar
mywaya 发布于 5 个月前
  0  

现在是点击button 参数可以解析 如: http://localhost/deleteComment/16/24 返回原有界面 但没有成功删除 控制台显示 302

avatar
tomoya92 发布于 5 个月前
  0  

@mywaya 那说明你这行代码没有执行 commentService.deleteComment(commentId); 你这个对象hostHolder是哪来的?

avatar
mywaya 发布于 5 个月前
  0  

类:

@Component
public class HostHolder {
    private static ThreadLocal<User> users = new ThreadLocal<>();

    public User getUser(){
        return users.get();
    }

    public void setUser(User user){
        users.set(user);
    }

    public void clear(){
        users.remove();
    }
}

刚刚调试了半天 确实是commentService.deleteComment(commentId)没有执行
Service层:

public void deleteComment(int id){
    commentDao.updateStatus(id,1);
}

Dao层:

@Update({"update",TABLE_NAEM,"set status = #{status} where id = #{id}"})
void updateStatus(@Param("id") int id, @Param("status") int status);

我没有检查出错误 @tmoya92 你看看那有错

avatar
mywaya 发布于 5 个月前
  0  

我把角色分为了SuperAdmin User Admin 三种

avatar
mywaya 发布于 5 个月前
  0  

@tomoya92
comment 表结构:id content user_id article_id careated_date status

avatar
mywaya 发布于 5 个月前
  0  

@tomoya92
comment 表结构:id content user_id article_id careated_date status

avatar
mywaya 发布于 5 个月前
  0  

我想通过更新status 达到删除评论的效果
默认状态是0 删除状态是1

avatar
tomoya92 发布于 5 个月前
  0  

@mywaya 你把这个打印出来看看里面是什么东西 hostHolder.getUser() 看你上面代码好像是没有SuperAdmin权限

avatar
mywaya 发布于 5 个月前
  0  

从打印语句来看 Service 层语句没有执行

avatar
tomoya92 发布于 5 个月前
  0  

@mywaya 那看来你这个 hostHolder.getUser() 拿到的用户没有 SuperAdmin权限,你再好好检查一下

avatar
mywaya 发布于 5 个月前
  0  

确实是没有SuperAdmin权限 代码修改为:
if (hostHolder.getUser()==null)
return "redirect:/in?next=/article/"+articleId;
else{
commentService.deleteComment(commentId);
System.out.println(commentId);
}
return "redirect:/article/"+articleId;
}
可成功删除

avatar
tomoya92 发布于 5 个月前
  0  

@mywaya 找到问题了,你就好好查查看为啥没有SuperAdmin权限吧

avatar
mywaya 发布于 5 个月前
  0  

@tomoya92 bug 已解决 谢谢大佬

添加一条评论 请尽量发布对他人有帮助的评论

登录后可发布评论

登录 | Github登录