Asynchronously update vaadin components
Solution 1
There's an addon named ICEPush which does exactly what I needed.
https://vaadin.com/directory#addon/icepush
Solution 2
A reasonably comprehensive discussion of the problem, and the various solutions can be found here; Redux: 'vanilla' Vaadin simply follows a user initiated request-response paradigm.
You'll need to use an add-on to initiate changes in the browser from the server.
Aside : you should synchronize on the application object when updating components from your own threads (as opposed to the normal request thread) - as you may get 'Sync' errors.
Comments
-
Sergey almost 2 years
I have this code for updating vaadin button's caption every 3 seconds.
TimerTask tt = new TimerTask() { @Override public void run() { try { logger.debug("adding l to button's caption"); btn.setCaption(eventsButton.getCaption() + "l"); } catch (Exception ex) { logger.error(ex.getMessage()); } } }; Timer t = new Timer(true); t.scheduleAtFixedRate(tt, 0, 3000);
However, it can't change button's caption although it is executed every 3 seconds(judging by the log file). How can I access vaadin's GUI components from another thread?