gpt4 book ai didi

grails - Grails数据库操作和 View 呈现

转载 作者:行者123 更新时间:2023-12-02 15:17:53 27 4
gpt4 key购买 nike

我正在尝试为Grails项目添加一个简单功能,类似于youtube,它将允许用户喜欢/不喜欢文章。有一个非常原始的页面来显示带有喜欢的文章和一个使“喜欢”成为可能的 Controller 。 las,每当调用此方法时,它都会尝试呈现一个不存在的 View ,而不是返回到前一个 View 。这是.gsp正文代码:

<g:each in="${articles}" var="article">
<table class="table-bordered">
<tr>Article title: ${article.title}</tr><br>
<tr>Author: ${article.author}</tr><br>
<tr>Page: ${article.page}</tr><br>
<tr>Likes: ${article.getLikesCount()}</tr><br>
<g:link resource="Article" action="articleLiked" id="${article.id}" params="[articleId: article.id]">Like it!</g:link>
</table>
</g:each>

这是我的 Controller 的“喜欢”方法代码:
def articleLiked(Article article){
ServiceUser user = springSecurityService.currentUser
ArticleLike al = ArticleLike.findByArticleAndServiceUser(article, user)
if(al){
al.liked = true
}else{
al = new ArticleLike(Article: article, ServiceUser: user, liked: true)
}
al.save()
showArticleList()
}

结果,我得到了这个异常:
Error 500: Internal Server Error

URI
/article/articleLiked/1
Class
javax.servlet.ServletException
Message
Could not resolve view with name '/article/articleLiked' in servlet with name 'grailsDispatcherServlet'

另外,即使我手动返回articleList页面, getLikesCount()方法输出的值仍为0。是什么引起了所有这些麻烦?

更新:

万一您想知道,我的showArticleList()方法如下所示:
def showArticleList(){
render (view: 'articleList', model: [ articles: getArticle(), articleLikes: getArticleLike()]);
}

最佳答案

有几件事,

def articleLiked(){

ServiceUser user = springSecurityService.currentUser
Article article = Article.get(params.id)
ArticleLike al = ArticleLike.findByArticleAndServiceUser(article, user)

// the rest of your code

如果要重定向到其他操作,则应使用重定向。所以将 showArticleList()更改为 redirect(action: "showArticleList") }那应该工作。

关于grails - Grails数据库操作和 View 呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49258832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com