Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Preserving State Between Refreshes

DZone's Guide to

Preserving State Between Refreshes

· Java Zone ·
Free Resource

Microservices. Streaming data. Event Sourcing and CQRS. Concurrency, routing, self-healing, persistence, clustering...learn how Akka enables Java developers to do all this out of the box! Brought to you in partnership with Lightbend.

Last 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:

  1. Call the URL with a named fragment beneath it (like #test). The page displays it right of the URI fragment label.
  2. Change the fragment in the adress bar (like #testchanged) and refresh the page. The page should display the new URI fragment in the page.
  3. 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 :-)

Microservices. Streaming data. Event Sourcing and CQRS. Concurrency, routing, self-healing, persistence, clustering...learn how Akka enables Java developers to do all this out of the box! Brought to you in partnership with Lightbend. 

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}