1

编辑:根据反馈,完全删除原始 Q. 并以更好的语言重新发布

我希望访问请求或参数变量并在控制器和 gsp 之间传递它。我知道 params 对象包含查询字符串所具有的所有内容。

我看到的所有例子都是模型驱动的。我已经在网上查找了文档,并且有两本书——开始的 grails 和权威的 grails 指南,这两本书都有关于 params 的数据库驱动示例。我想了解如何设置和访问参数。我到处读到的是它是请求变量的映射。

我的场景如下:我有一个控制器,它将一个列表(不是来自数据库)发送到 GSP。我想在 GSP 和控制器之间传递一个“参数”变量。

重申一下,我所拥有的场景不是模型驱动的场景。我正在寻找遍历项目列表(不知道数据库计数)并由用户点击驱动。我想实现类似 twitter 的“底部的更多按钮”的东西。在页面底部有一个简单的远程链接和一个新的页面计数器,我在控制器中访问它并传递给我的服务类以获得列表的新部分。

控制器代码:

//access params from request
int pageInt =params["pagecount"] // *i always get null here*

callMyList(pagecount) //calls my service method to get next set of list for next page

GSP(非实际)代码

 <%= params.get("pagecount") %>
 <%= nxtPage = pagecount++ %>
  ...
 <%params["myId"] = nxtPage%>


<g:remoteLink action="list" id="${nxtPage}">More</g:remoteLink>
4

2 回答 2

2

params 对象仅对从当前请求的查询字符串中获取值有用。在 GSP 中的 params 中设置值不会做任何事情。Params 是一个请求范围对象,每个新请求都是一个全新的对象。要将值从 GSP 传递到 List 控制器,该值必须位于对控制器的新请求的查询字符串中。就您而言,您似乎想将其放在“更多”链接中。您的 remoteLink 标记的写入方式,nxtPage 的值应该在您的 List 控制器的 params.id 中,因此您可以通过这种方式访问​​它。如果你想在 params.pagecount 中,你必须把它放在你 remoteLink 标签的 params 属性中。像这样的东西:

<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink>
于 2009-06-12T11:30:38.250 回答
1
def urlString =  request.scheme + "://" + request.serverName + ":" 
+ request.serverPort + "/" + grailsApplication.metadata.'app.name' 
+ "/" + controllerName + "/" 
于 2011-10-28T11:12:22.237 回答