我正在尝试在Grails应用程序中使用cookie但没有成功.特别是,在测试套件控制器的show()方法中,我想将cookie设置为显示的最新测试套件;也就是说,params.id的值可用于show()方法.然后,在list()方法
但是,我设置的cookie(名为“tcCookie”)仅在show()方法中可见 – 而不是在list()方法中.这是代码:
在show()中:
request.cookies.each { println "show: cookie ${it.name} <${it.value}>" }
在list()中:
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 )
当我在列表和显示视图之间来回切换(在show()之后使用params.id = 277)我得到:
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?
或者您可以阅读基本的Java文档并使用简单响应和请求对象来执行此操作:Cookie homeCookie = new Cookie( 'home', 'name' ) homeCookie.path = '/' homeCookie.maxAge = 0 response.addCookie homeCookie
和
String home = request.cookies.find{ 'home' == it.name }?.value