Обновление пользовательского интерфейса ZK при изменении данных базы данных

Как я могу обновить данные в пользовательском интерфейсе при некоторых изменениях в базе данных? Я хочу, чтобы мой пользовательский интерфейс автоматически обновлял данные, когда я изменял запись в своей базе данных (с помощью обычного средства просмотра базы данных), как это делает Facebook, когда кто-то из друзей публикует что-то в буфере обмена (без обновления)

1 ответ

Вы можете использовать опрос или толкание.

Для толкания вы можете расширить SelectorComposer и применить к вашему Zul

public class ComposerPush extends SelectorComposer<Component>  {

    private static final long serialVersionUID = 1L;
// wire components
@Wire
ZHighCharts chartComp;

// Basic Line
private SimpleExtXYModel dataChartModel = new SimpleExtXYModel();


 public void startWorker() {
            final Desktop desktop = Executions.getCurrent().getDesktop();
            if (desktop.isServerPushEnabled()) {
            } else {
                desktop.enableServerPush(true);
                if(timer != null)timer.cancel();
                timer = new Timer();
                timer.schedule(databaseCheck(), 0, 5000);
            }
        }

    private TimerTask databaseCheck() { 
            return new TimerTask() {
                @Override
                public void run() {
                    updateInfo();
                }
            };
        }

        private void updateInfo() {
            try {
                 Desktop desktop = chartComp.getDesktop();
                if(desktop == null) {
                    timer.cancel();
                    return;
                }

                Executions.activate(desktop);
                try {

                          **<your code in here>**

                } finally {
                    Executions.deactivate(desktop);
                }
            } catch (DesktopUnavailableException ex) {
                System.out.println("Desktop currently unavailable");
                timer.cancel();
            } catch (InterruptedException e) {
                System.out.println("The server push thread interrupted");
                timer.cancel();
            }


        }
Другие вопросы по тегам