GWT. Set url without submit

后端 未结 3 559
太阳男子
太阳男子 2021-01-18 06:35

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#

相关标签:
3条回答
  • 2021-01-18 07:12

    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

    0 讨论(0)
  • 2021-01-18 07:24

    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.

    0 讨论(0)
  • 2021-01-18 07:37
     $wnd.history.pushState(newUrl, "", newUrl);
    

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

    0 讨论(0)
提交回复
热议问题