如果在GWT中设置超时=30天,为什么不存储Cookie?
这很奇怪。好的,下面的代码可以正常工作如果在GWT中设置超时=30天,为什么不存储Cookie?,gwt,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, c
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");
}
}
public void setCookie(字符串cookiesName,字符串cookiesValue){
最终整数COOKIE_超时=1000*60*60*24;//1天
日期过期=新日期((新日期()).getTime()+COOKIE\u超时);
setCookie(cookiesName、cookiesValue、expires);
}
//然后
setCookie(“currentLang”、“de”);
收集cookies=cookies.getCookieNames();
用于(字符串cookie:cookies){
if(“currentLang”.equals(cookie)){
System.out.println(“got currentlang”);
}
}
如果我运行上面的代码,那么我可以看到输出:“得到currentlang”
但是,如果我设置timeout=30天final int COOKIE\u timeout=1000*60*60*24*30//30天
,然后什么也没有打印出来,所以如果我们设置30天,“currentLang”甚至没有被存储
为什么呢?Gwt会阻止这种情况发生吗?您正在对溢出超过整数最大正值的和使用整数算术。所以1000*60*60*24*30是负数
您可以尝试1000L*60*60*24*30u表示最终长COOKIE\u超时=1000L*60*60*24*30//30天?ti是有效的,但是为什么我们必须把L放在1000之后,如果我不把L放在1000之后,那么它就不起作用了。1000l被解释为一个值为1000的长,所以乘法都将作为一个长而不是整数来完成。