Gwt 在不刷新的情况下更新URL

Gwt 在不刷新的情况下更新URL,gwt,Gwt,我正在迭代数据,并在仪表板应用程序上为链接(指向同一页面,但带有参数)生成参数化URL。但是,我这样做需要在用户单击链接时刷新页面 使用StringBuilder生成URL Detailhtml.append("<a href=\"http://" + domain + "&service=" + count +"&day=" + day +"\"><img src=\"/info.jpg\" alt=\"Info\"/>"); Detailhtml.a

我正在迭代数据,并在仪表板应用程序上为链接(指向同一页面,但带有参数)生成参数化URL。但是,我这样做需要在用户单击链接时刷新页面

使用StringBuilder生成URL

Detailhtml.append("<a href=\"http://" + domain + "&service=" + count +"&day=" + day +"\"><img src=\"/info.jpg\" alt=\"Info\"/>");
Detailhtml.append(“”);
有没有一种方法可以动态创建GWT按钮,或者触发一些javascript来添加参数而无需刷新页面


任何帮助都很好…

如果片段(#)之前的URL的任何部分发生更改,页面将刷新。因此,如果您从foo.com#a转到foo.com/?bar=baz#a,将触发页面刷新

最好的解决方法就是在片段出现之前不要改变任何东西。将foo.com/?bar=baz更改为foo.com/#bar=baz(或某些变体),并通过调用
History.addHistoryListener(…)
让您的GWT应用程序侦听更改

然后,当您听到历史记录发生变化时,解析URL中的片段并相应地更新您的应用程序


一些库提供了一个围绕此功能的包装器,并允许您描述
Place
s,当片段更新以匹配它们时将触发它。如果你最终用这个片段做了很多复杂的事情,那么最好去看看这些地方。但是,如果你只是传递一些参数,你可以不去听
历史
的变化。

太好了,杰森,我不知道。因此,为了使这项工作正常进行,我需要在第一次加载时在我的URL中插入一个#,而不是在第一次加载时——只要你想在URL中添加/更改某些内容。举个例子,看看GMail是如何根据状态变化来改变它的URL的。尽管您可以使用#foo=bar加载页面,并在GWT代码加载时进行处理,如果您希望在该状态下加载它的话。但是你应该确保你的网址仍然有效。谷歌也鼓励你使用历史作为一种良好的实践。实际上,当您需要刷新页面时,您可以将用户移动到一个新位置。