这很奇怪。好的,下面的代码工作正常
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会阻止这种情况发生吗?
答案 0 :(得分:2)
您使用整数运算来计算溢出超出整数最大正值的和。所以1000 * 60 * 60 * 24 * 30是否定的。
您可以尝试1000L * 60 * 60 * 24 * 30