gwt Cookies没有设置或获取

时间:2012-11-22 12:19:02

标签: java gwt session-cookies

环境

  • Eclipse Juno Service Release 1
  • GWT 2.5
  • 使用GWT开发人员插件的Google Chrome
  • 使用“运行应用程序”作为Google Web应用程序在Jetty服务器上运行GWT

我正在尝试使用以下代码使用gwt设置2个cookie:

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成长。

更新

Fiddler确认已发送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 个答案:

答案 0 :(得分:2)

应该是

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

将到期时间转换为毫秒。