如果在GWT中设置超时= 30天,为什么不会存储Cookie?

时间:2014-07-31 00:51:30

标签: gwt

这很奇怪。好的,下面的代码工作正常

public void setCookie(String cookiesName, String cookiesValue){
    final int COOKIE_TIMEOUT = 1000 * 60 * 60 * 24;//1 days
    Date expires = new Date((new Date()).getTime() + COOKIE_TIMEOUT);
    Cookies.setCookie(cookiesName, cookiesValue, expires);
}
//then
setCookie("currentLang","de");
Collection<String> cookies = Cookies.getCookieNames();
for(String cookie : cookies){
        if("currentLang".equals(cookie)){
              System.out.println("got currentlang");
        }
}

如果我运行上面的代码,那么我可以看到输出:&#34; 得到currentlang &#34; 但是,如果我设置超时= 30天final int COOKIE_TIMEOUT = 1000 * 60 * 60 * 24 * 30;//30 days,那么没有打印出来,所以&#34; currentLang&#34;如果我们设置30天,甚至没有存储?

为什么? Gwt会阻止这种情况发生吗?

1 个答案:

答案 0 :(得分:2)

您使用整数运算来计算溢出超出整数最大正值的和。所以1000 * 60 * 60 * 24 * 30是否定的。

您可以尝试1000L * 60 * 60 * 24 * 30