Search code examples
javaspringvaadinvaadin4springvaadin-refresher

How to use refresher addon in vaadin?


I'm trying to use the refresher addon in vaadin. But the refresh method is never executed. What am I missing?

@VaadinUI
@PreserveOnRefresh
public class RootUI extends UI {
    @Override
    protected void init(VaadinRequest request) {
        REFRESHER.setRefreshInterval(500);
        REFRESHER.addListener(new ChatRefreshListener());
        addExtension(REFRESHER);
    }

    public static final Refresher REFRESHER = new Refresher();

    public class ChatRefreshListener implements RefreshListener {
        @Override
        public void refresh(final Refresher source) {
            System.out.println("test"); //this is never executed
        }
    }
}

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class MyApp extends SpringBootServletInitializer { 
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(MyApp.class);
}
}

<vaadin.version>7.4.0.alpha2</vaadin.version>


Solution

  • First off, using an Extension in a constant is very dangerous at best, but most probably will flat-out not work.

    But most importantly, I've deprecated Refresher in favor of UI.setPollInterval() which was introduced in Vaadin 7.1. Vaadin 7.2 (I think) introduced a PollListener, so you now get events for each poll as well.

    I guess I should make that deprecation explicit now that Refresher is finally 100% integrated into Vaadin.