grails中的请求变量

grails中的请求变量,grails,request,gsp,params,Grails,Request,Gsp,Params,编辑:根据反馈,完全删除原始Q,并用更好的语言重新发布 我希望访问一个请求或params变量,并在控制器和gsp之间传递它。我知道params对象包含querystring所拥有的一切 我看到的所有示例都是模型驱动的。 我在网上查阅了文档,我有两本书——《grails入门》和《grails权威指南》,这两本书都有关于params的数据库驱动示例。我想了解如何设置和访问参数。我在所有地方读到的都是它是一个请求变量的映射 我的设想如下: 我有一个控制器,它向GSP发送一个列表(不是来自数据库)。我想

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

我希望访问一个请求或params变量,并在控制器和gsp之间传递它。我知道params对象包含querystring所拥有的一切

我看到的所有示例都是模型驱动的。 我在网上查阅了文档,我有两本书——《grails入门》和《grails权威指南》,这两本书都有关于params的数据库驱动示例。我想了解如何设置和访问参数。我在所有地方读到的都是它是一个请求变量的映射

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

重申一下,我的场景不是模型驱动的场景。我希望迭代通过一个项目列表(没有已知的数据库计数),并由用户点击驱动。我想实现一些东西,比如twitter的“底部的更多按钮”。在页面底部有一个简单的remotelink,其中包含一个新的页面计数器,我可以在控制器中访问该计数器,并将其传递给我的服务类以获取列表的新部分

控制器代码:

//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(非实际)代码


...
更多

参数对象仅用于从当前请求的查询字符串中获取值设置GSP中参数中的值不会起任何作用。Params是一个请求范围对象,每个新请求都是一个全新的对象。要将GSP中的值传递给列表控制器,该值必须位于发送给控制器的新请求的查询字符串中。在你的情况下,看起来你想把它放在你的“更多”链接中。按照编写remoteLink标记的方式,nxtPage的值应该在列表控制器的params.id中,这样您就可以通过这种方式访问它。如果您希望位于params.pagecount中,则必须将其置于remoteLink标记的params属性中。大概是这样的:

<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink>
更多

你能发布一些代码片段吗?这篇文章没有很准确地说明你的问题是什么。完成-很抱歉你不得不忍受前面的帖子!谢谢Ben,尝试一下,你能告诉我我是否可以做以下事情吗(我遇到了一个错误:无法将类为“java.lang.String”的对象“2”强制转换为类为“java.lang.Integer”)这就是我在GSP int pageInt=params[“pagecount”]int pageInt=params[“pagecount”]请求参数作为字符串对象从params对象中出来的内容。如果您想要字符串的整数值,您必须像这样解析它:int pageInt=integer.parseInt(params.pagecount)谢谢,Ben设法解决了这个问题。如果这是我对非数据库列表进行“分页”的方式,请告诉我,好吗?例如:一些来自网络或第三方应用程序(如facebook/twitter等)的列表。。。。。。。。还有,你怎样才能更好地理解这些逻辑呢?请给出建议-开始时感到如此愚蠢是很自然的吗?
<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink>
def urlString =  request.scheme + "://" + request.serverName + ":" 
+ request.serverPort + "/" + grailsApplication.metadata.'app.name' 
+ "/" + controllerName + "/"