我正嘗試在Grails應用程序中使用cookie,但沒有成功。特別是在測試套件控制器的show()方法中,我想將cookie設置爲最新的測試套件;也就是說,show()方法可用的params.id的值。然後,在list()方法中,我想提供一個顯示最近測試套件的快捷方式(我試圖用cookie設置的值)。如何在Grails中設置和檢索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}>" }
我通過設置cookie的show()方法:
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?
你知道如何刪除cookie嗎?未將'maxAge'設置爲'0'> – akiong 2017-03-16 14:10:29