Preserving State Between Refreshes
Join the DZone community and get the full member experience.
Join For FreeLast week, we had a look at the new Vaadin 7 Root that takes the place of the old version 6 Window. Though this evolution cleans window management in version 7, it brings a change that can have important consequences for those unaware of it.
In Vaadin 7, state is not kept between refreshes, whereas in v6, it was. Anyway, this is only the default behavior, and the Vaadin team provides us with the mean to do as we please. The only thing to do is to get a handle on the Application instance behind the root and call the preserveRoot(boolean) method, like so:
public class Vaadin7Root extends Root { public void init(WrappedRequest wrapped) { getApplication().setRootPreserved(true); } }
You can find here the sources of a little example application that let us play with this behavior. Let's try some things:
- Call the URL with a named fragment beneath it (like #test). The page displays it right of the URI fragment label.
- Change the fragment in the adress bar (like #testchanged) and refresh the page. The page should display the new URI fragment in the page.
- Now, check the Preserve root checkbox. Change the fragment for the second time (like #testsecond) and behold, the page still displays the "testchanged" value.
Whatever you want the behavior to be, Vaadin provides it :-)
Published at DZone with permission of Nicolas Fränkel, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments