2012-11-22 91 views
2

環境GWT Cookie不能設置或獲取

  • 的Eclipse朱諾服務發佈1
  • GWT 2.5
  • 谷歌瀏覽器與GWT開發插件
  • 使用「運行Jetty服務器上運行GWT應用程序「作爲谷歌網絡應用程序

我想設置2餅乾usin g gwt使用以下代碼:

if(result.getStatus() == ServerResponse.SUCCESS) { 
    System.out.println("I will now set cookies: " + result.getMessage() + " and " + Integer.toString(result.getValue().getId())); 
    Cookies.setCookie("opsession", result.getMessage(), new Date(System.currentTimeMillis() + ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES)); 
    Cookies.setCookie("opuser", Integer.toString(result.getValue().getId()), new Date(System.currentTimeMillis() + ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES)); 
    System.out.println("Cookie set: session: " + Cookies.getCookie("opsession")); 
    main.checkLoginAndRedirect(); 
    System.out.println("Redirected."); 
} else if(result.getStatus() == ServerResponse.FAILURE){ 
    new MessageBox(result.getShortTitle(), result.getMessage()).show(); 
} 

它似乎不工作。 println的公司在那裏進行調試,這裏是輸出:

I will now set cookies: 1er1qmaly9ker and 1 
Cookie set: session: null 
nullnull 
Redirected. 

ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES是(爲一個int),長返回20

更新

使用

if(Cookies.getCookie("opsession") == null) { 
    System.out.println("opsession: cookie not found at all."); 
} 

我已經確認cookie根本沒有放置,並且沒有'null'字符串值。

我也改變了 ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES成長。

更新

小提琴手確認cookie數據已發出:

Response sent 30 bytes of Cookie data: Set-Cookie: JSESSIONID=4kr11hs48gvq;Path=/

但是,只有當我使用setCookie方法的更長的版本:

Cookies.setCookie("opuser", Integer.toString(result.getValue().getId()), new Date(System.currentTimeMillis() + ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES), null, "/", false); 

如果我使用String, String, long變體,fiddler通知沒有cookie數據。

+1

不應該是'ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES * 60000'將其轉換爲毫秒。 –

+0

你有我非常誠摯的謝意!我以這種方式使用它,因爲在服務器上,我使用'HttpSession.setMaxInactiveInterval()'行,這需要幾秒鐘的時間! 請張貼這個答案,因爲我非常想檢查它! :) –

回答

2

應該

new Date(System.currentTimeMillis() 
+ (ClientUser.SESSION_EXPIRY_TIME_IN_MINUTES * 60000))) 

的到期時間轉換爲毫秒。

+0

好:)。謝謝! –