【发布时间】:2014-11-16 23:01:16
【问题描述】:
我正在尝试在 Grails 应用程序中使用 cookie,但没有成功。特别是,在测试套件控制器的 show() 方法中,我想将 cookie 设置为显示的最新测试套件;也就是说,可用于 show() 方法的 params.id 的值。然后,在 list() 方法中,我想提供一个快捷方式来显示最新的测试套件(我尝试使用 cookie 设置的值)。
但是,我设置的 cookie(名为“tcCookie”)仅在 show() 方法中可见,而在 list() 方法中不可见。代码如下:
在显示()中:
request.cookies.each { println "show: cookie ${it.name} <${it.value}>" }
在列表()中:
request.cookies.each { println "list: cookie ${it.name} <${it.value}>" }
我通过以下方式在 show() 方法中设置 cookie:
Cookie cookie = new Cookie( "tcCookie", params.id )
cookie.maxAge = 315360000000L
response.addCookie( cookie )
当我在列表和显示视图之间来回切换时(在使用 params.id = 277 的 show() 之后)我得到:
show: cookie tcCookie <277>
show: cookie JSESSIONID <9DEBFB40F78B5E24A92C750157342069>
list: cookie JSESSIONID <9DEBFB40F78B5E24A92C750157342069>
show: cookie tcCookie <277>
show: cookie JSESSIONID <9DEBFB40F78B5E24A92C750157342069>
list: cookie JSESSIONID <9DEBFB40F78B5E24A92C750157342069>
在我看来,这表明 cookie “tcCookie”仅在 show() 方法中可见,这对我来说毫无用处。我需要对其进行设置,使其在其他方法中可见。
此外,cookie tcCookie 在多个会话中仍然存在 - 正如我所期望的那样 - 但仍然仅在 show() 方法中可见。
也许我对 cookie 的理解是错误的,但我还是被卡住了。任何帮助,将不胜感激。此外,浏览器中必须设置数百个其他 cookie,使用我使用的代码都看不到这些 cookie,那么有什么方法可以访问其他 cookie 吗?
【问题讨论】: