Grails 3 Cookie插件 - 返回Null

时间:2017-03-08 16:01:07

标签: grails cookies

我正在尝试在grails 3中使用cookie。 i tried this plugin但我不知道为什么它根本不起作用..

 cookieService.setCookie('username', customer?.email)

我使用此代码从gsp

调用它
 <g:cookie name="username"/>

我也试过这种方式..

 def cokusername = cookieService.setCookie('username', customer?.email)
                println "cookieService.getCookie('username')  = "+cookieService.getCookie('username')
                redirect(controller: "toko",cokusername: cokusername)

这是我的tokoController.groovy索引:

def index={
        def toko = CifLogo.executeQuery("from CifLogo order by rand()",[max: 10])
//        def itemRandom = Item.executeQuery("from Item where cif = :cif order by rand()",[max:12,cif:cif])
        def awdf = cookieService.getCookie('username')
        println "awdf = "+awdf
        println "cokusername = "+params.cokusername
        [tokoList:toko,cokusername:awdf]
    }

我不知道要检索我的cookie。 :( enter image description here

更新

def index(){
        def toko = CifLogo.executeQuery("from CifLogo order by rand()",[max: 10])
//        def itemRandom = Item.executeQuery("from Item where cif = :cif order by rand()",[max:12,cif:cif])
        def awdf = cookieService.getCookie('username')
        println "awdf = "+awdf
        println "cokusername = "+params.cokusername
        [tokoList:toko,cokusername:awdf]
    }

enter image description here

我试图像这样打印cookie ..

def awdf = request.getCookie('username')
        println "awdf = "+awdf
        println "cokusername = "+params.cokusername
        request.cookies.each { println "${it.name} == ${it.value}" }

这就是结果

enter image description here

2 个答案:

答案 0 :(得分:0)

从我能看到的这一行:

  redirect(controller: "toko",cokusername: cokusername)

应该是:

  redirect(controller: "toko",params:[cokusername: cokusername])

使用grails 3中的闭包的操作也会产生不希望的结果。你应该改为方法。因此这一行:

  def index={

应该是:

  def index(){

除此之外,似乎cookieService代码应该可以正常工作,所以我只能假设它是由应该是方法的闭包索引引起的。

另一件事可能是您正在进行重定向,这将清除请求并且不会保留在重定向之前设置的任何Cookie

答案 1 :(得分:0)

我不知道为什么,但也许这是一个错误。

我将此代码用于setCookie

cookieService.setCookie(name:"username", value: customer?.email, maxAge: 24*60*60, path: "/")

阅读this code后。

我无法使用此代码删除Cookie。

cookieService.deleteCookie(cookieService.findCookie("username"))

因为当我打印cookieService.findCookie("username")时,它会返回javax.servlet.http.Cookie@78cbf320

来自this link

和方法deleteCookie(Cookie cookie)

所以我认为必须删除它。

但仍然可用。

所以我可以回答关于 setCookie 而非 deleteCookie

的问题

我也试过这种方式删除cookie ..但仍然失败。

CookieService.setCookie(name:"username", value: "", maxAge: 0, path: "/")