我有一个Vaadin应用程序,我喜欢" live",这样当不同的人打开应用程序时,他们会看到另一个人直接做出的更改,而不刷新他们的页面。
我该怎么做?
该应用程序目前包含两个面板,其中包含组件,可以拖放。
现在我希望在所有打开的浏览器视图中看到拖放,这样当人A拖放某些东西时,这会自动显示在其他视图中。
我目前只能做到这一点,当其他人刷新他们的观点时(我使用Vaadin 7.6.6)
更新
@Push
private static final class MyPanel extends Panel implements BroadcastListener {
@Override
public void attach() {
Broadcaster.register(this);
super.attach();
}
@Override
public void detach() {
Broadcaster.unregister(this);
super.detach();
}
@Override
public void receiveBroadcast(BroadcastMessage message) {
System.out.println("BROADCOAST " + message);
}
}
private Panel createTaskPanel(Status status) {
Panel tasks = new MyPanel();
tasks.setHeight("500px");
VerticalLayout taskLayout = new VerticalLayout();
taskLayout.setSpacing(true);
taskLayout.setMargin(true);
TaskContainer.get().getTasks().filter(task -> task.getStatus() == status).map(TaskComponent::new)
.map(TaskComponent::getDragAndDrop).forEach(taskLayout::addComponent);
DragAndDropWrapper wrapper = new DragAndDropWrapper(taskLayout);
wrapper.setDropHandler(new DropHandlerImplementation(status, taskLayout));
tasks.setContent(wrapper);
return tasks;
}
答案 0 :(得分:2)
你需要两件事:
这里有一个更详细的答案的例子