Asynchronously update vaadin components

13,408

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.

Share:
13,408
Sergey
Author by

Sergey

I'm a student.

Updated on June 04, 2022

Comments

  • Sergey
    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?