GWT Cookies.getCookie返回;空";
更新:我尝试在浏览器中清除创建的cookie并重试,但没有成功。可以想象,我在某个时刻设置了一个值为“null”的cookie (好的,这可能是一个反驳性的问题,所以我把它改成CW) Google Web Toolkit的文档说明了有关Cookie.getCookie的内容: 公共静态java.lang.String获取cookie(java.lang.String名称) 获取与给定名称关联的cookie 参数:GWT Cookies.getCookie返回;空";,gwt,cookies,Gwt,Cookies,更新:我尝试在浏览器中清除创建的cookie并重试,但没有成功。可以想象,我在某个时刻设置了一个值为“null”的cookie (好的,这可能是一个反驳性的问题,所以我把它改成CW) Google Web Toolkit的文档说明了有关Cookie.getCookie的内容: 公共静态java.lang.String获取cookie(java.lang.String名称) 获取与给定名称关联的cookie 参数: 名称-要检索的cookie的名称 返回: cookie的值,如果cookie
- 名称-要检索的cookie的名称
- cookie的值,如果cookie不存在,则为null
if(cookie==null)Cookies.setCookie(cookie,newValue)代码>
谷歌这样做有什么可以想象的原因吗,或者有人只是在耍我?也许尝试一个持续时间可以改变这种情况。试试这个:
Date now = new Date();
long nowLong = now.getTime();
nowLong = nowLong + (1000 * 60 * 60 * 24 * 7);//seven days
now.setTime(nowLong);
Cookies.setCookie("sampleCookieName", "sampleCookiValue", now);
您确定没有将cookie设置为“null”值吗?您应该查看响应上的标题,以确保。根据GWT版本的不同,这可能有不同的方式——最简单的方法可能是点击“编译”并尝试真正的浏览器,这样可以很容易地看到标题。我可以理解您的头痛(我不久前发布了一个关于GWT cookie文档的错误:)
您正在使用哪个版本的GWT
您在哪个浏览器中测试
我刚刚查看了1.6.4的代码(他们提供了源代码),我鼓励您将其作为bug归档。请参阅2994期,了解一些相关信息,但我认为这已经足够不同,足以证明它自己的bug文件
看起来GWT处理哈希映射的方式(出于性能原因?)与处理常规哈希映射的方式不同;解包gwt-user.jar文件时,请参阅com/google/gwt/emul目录中的java.util.AbstractHashMap。下面是get()的实现
return(key==null)?nullSlot:(!(字符串的键实例)?getHashValue(
键,getHashCode(键)):getStringValue((字符串)键));
也许这就是问题所在
希望这有帮助
Dan我认为将cookie设置为null会使cookie的值为“null”(字符串)
您应该删除带有cookie的cookie。removeCookie(“CookieName”)应该删除cookie,您的查询将返回真正的null而不是字符串。我的观点是,我没有设置cookie,getCookie返回字符串“null”而不是像文档中强烈暗示的实际空值。这发生在我有setCookie代码之前-我只是想知道为什么我的“cookie生成”代码没有被执行。不幸的是,这似乎只发生在托管模式浏览器上,我不知道如何清除该浏览器上的cookie以测试问题。您可以通过使cookie过期来从客户端删除它。-您还可以列出cookies客户端,查看其中的内容。