0

我正在尝试使用PollListener以下代码在 vaadin 中使用:

@VaadinUI
@PreserveOnRefresh
public class ApplicationUI extends UI {
    @Override
    protected void init(VaadinRequest request) {
        setPollInterval(1000);
        access(new Runnable() {
            @Override
            public void run() {
                System.out.println("TEST POLL: " + counter++); //is only printed a single time
            }
        });
    }
}

当我打开我的应用程序时,会打印一次输出“TEST POLL 0”。但就是这样。我可能错过了什么?

4

1 回答 1

7

您无需执行任何操作,投票示例明确指出:

通过这样做,浏览器将在每个“超时”毫秒轮询服务器并检索任何可能挂起的更改

因此,当下次轮询发生时,您在应用程序中所做的任何事情都将在客户端浏览器上更新。在示例中,您应该会在 UI 加载 5 秒后看到该标签显示,而无需任何特殊的用户交互。

但是,如果您需要对每个此类请求执行一些代码,那么您可以添加一个pollingListener

@Override
protected void init(VaadinRequest request) {
    setPollInterval(1000);
    addPollListener(new UIEvents.PollListener() {
        @Override
        public void poll(UIEvents.PollEvent event) {
            log.debug("Polling");
        }
    });
}
于 2014-06-23T11:07:32.297 回答