我是Grails的新手,目前正在使用Grails 1.1.1。我不知道如何将控件/操作中的列表传递给视图,然后将该视图中的相同列表传递给另一个操作。我这样做的原因是重用预定义的对象(在这种情况下为“列表”)。这是我的情景:
我有一个搜索视图(search.gsp)调用“搜索”操作,该操作查询数据库,将结果存储在列表中(使用Hibernate Criteria),并在结果视图上呈现该列表(results.gsp )。在result.gsp上,我有导出栏(使用grails导出插件)将该列表导出到EXCEL文件。我将该列表传递给结果视图时遇到问题,以便我可以将其传递给“导出”操作。
如果有人可以就此给出建议,我真的很感激。感谢。
答案 0 :(得分:3)
由于您希望将此对象传递给多个请求,因此您必须将其存储在user session中,如下所示:
def search = {
session["results"] = queryDatabase(params)
}
def export = {
def results = session["results"]
}
答案 1 :(得分:0)
正如Michael指出的那样,您的场景涉及不同的HTTP请求,因此您不能将结果“传递”到第二个操作,就像将模型从控制器操作传递到视图一样。虽然迈克尔的建议(将结果存储在用户会话中)肯定会有效,但另一种选择(和更常见的恕我直言)方法是将相同的请求参数(例如您的搜索查询)传递给导出操作,然后重新获取导出操作中来自DB的数据。
这种无状态方法有一些优点: