Vaadin - 每秒使用从数据库获取的数据更新UI数据

时间:2014-02-11 15:03:33

标签: java web-applications vaadin vaadin7

有一个FieldGroup,其数据源设置为SQLContainer,配置为使用带FreeformQuery的PostgreSQL数据库。另一个应用程序(不是webapp)每秒将数据写入数据库。

如何立即使用新数据更新FieldGroup?我尝试做的是设置一个ScheduledExecutorService,它每秒从数据库获取数据并将其设置为FieldGroup。但它似乎不起作用 - ScheduledExecutorService成功从数据库获取数据,但UI未更新。没有例外,UI只是不会改变。

以下是我的ScheduledExecutorService的代码:

ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();

ses.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                SQLContainer latestData = DatabaseHelper.getLatestData();
                fieldGroup.setItemDataSource(latestData.getItem(id));
            }
}, 0, 1, TimeUnit.SECONDS);

我还试图从ScheduledExecutorService Notification.show("hello");显示通知 但它没有效果 - 不显示通知。那么,也许,不可能从主线程以外更改UI?

那么,再一次,如何每秒使用数据库中的新数据进行UI更新?是否有可能不是每秒都能获得数据,但是当数据库发生变化时?我还读过关于从服务器推送到客户端的问题 - 这有助于解决我的问题吗?

0 个答案:

没有答案