GWT. Set url without submit

吃可爱长大的小学妹 提交于 2019-12-30 18:43:51

问题


Can i change url(set parameter) without submit? I found this method http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/user/client/Window.Location.html#replace%28java.lang.String%29 but it submit page. All GWT state will be lost.


回答1:


Why are you trying to do this? Generally speaking, GWT apps don't change pages - thus they are normally SPAs (single page applications)

When you load a new page from a server, you will lose the state on that page. You can change the hash part of the URL as that won't return to the server, like this:

String newURL = Window.Location.createUrlBuilder().setHash("newhash").buildString();
Window.Location.replace(newURL);

However, if you're going to do this, I would recommend taking a look at GWT's MVP framework, which has built in support for managing locations using hash tokens.

http://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html




回答2:


If you want to change something that is not in the hash, for example you want to change a parameter in the URL, you can do it like this!

private void someMethod() {
    String newURL = Window.Location.createUrlBuilder().setParameter("someParam", "someValue").buildString();
    updateURLWithoutReloading(newURL);
}

private static native void updateURLWithoutReloading(String newUrl) /*-{
    $wnd.history.pushState(newUrl, "", newUrl);
}-*/;

Then you could register a function that handles the user using the back and forward browser buttons as demonstrated here.




回答3:


 $wnd.history.pushState(newUrl, "", newUrl);

Works nicely in HTML5-browsers. Not in IE8 or IE9!



来源:https://stackoverflow.com/questions/5402732/gwt-set-url-without-submit

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!