Over a million developers have joined DZone.

Preserving State Between Refreshes

DZone's Guide to

Preserving State Between Refreshes

· Java Zone ·
Free Resource

Verify, standardize, and correct the Big 4 + more– name, email, phone and global addresses – try our Data Quality APIs now at Melissa Developer Portal!

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) {

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

Developers! Quickly and easily gain access to the tools and information you need! Explore, test and combine our data quality APIs at Melissa Developer Portal – home to tools that save time and boost revenue. Our APIs verify, standardize, and correct the Big 4 + more – name, email, phone and global addresses – to ensure accurate delivery, prevent blacklisting and identify risks in real-time.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}