SPA bookmarks using # url element for navigation. This allow to navigate throughout service without reload whole page.
Browser notifies server about bookmark changes fires up the OnBookmark event on application class.
/* * Set color name on browser navigation back or forward or user set * right color name after # at address bar. */ @OnBookmark public void bookmarkColor(Event event) { if (event.getBookmark() == null || "".equals(event.getBookmark())) { color.setSelectedIndex(0); msg.setText(null); setStyle(new Background(ColorName.White.color())); } else displayColor(event.getBookmark(), true); }
User can change color by:
/* * Set color name getting from request parameter "color". */ @OnRequest public void requestColor(Event event) { HttpServletRequest request = (HttpServletRequest) event.getData(); initColor = request.getParameter("color"); if (initColor != null) displayColor(initColor, true); }
Here is example how to handle when application page was loaded on browser. You can do some actions on view initialization.
/* * Send selected bookmark name to browser bar. */ @OnLoad public void loaded() { Option op = color.getSelectedOption(); if (op != null) { setBookmark(op.getValue()); } }
Demo code you can get from here bookmarks.war