Java Vaadin中布局(或组件)的生命周期?
在Vaadin 7中,布局或组件的生命周期中有哪些挂钩 生命周期事件? 我想知道一个布局什么时候开始(出生)和停止(死亡)。具体来说,我怀疑我真的在乎“附加”和“分离”。布局可以在屏幕上使用之前存在于屏幕外,甚至在屏幕上使用之后,如果我以后在用户的工作会话中重新显示该布局的话。我认为附件是加入/离开显示的UI的过程,但我不确定 动机:通知,以观察者模式 这并不重要,但我关心生命周期的原因显示在。如图所示,我想通知一群用户的布局(在UI中),关于他们的小部件所表示的数据的变化。因此,每个布局都需要调用一个方法,以使它们使用新数据更新其小部件 要通知每个布局,我需要知道存在哪些布局实例,并且对此类更新感兴趣。所以我保存了一个布局的集合,这些布局会自动注册。基本上,这是一个很好的例子。该推送页面显示了这样一个注册表集合 缺少的部分:在布局的代码中,我在哪里注册和取消注册布局实例?我想我可以使用Java构造函数和Java Vaadin中布局(或组件)的生命周期?,java,layout,vaadin,lifecycle,vaadin7,Java,Layout,Vaadin,Lifecycle,Vaadin7,在Vaadin 7中,布局或组件的生命周期中有哪些挂钩 生命周期事件? 我想知道一个布局什么时候开始(出生)和停止(死亡)。具体来说,我怀疑我真的在乎“附加”和“分离”。布局可以在屏幕上使用之前存在于屏幕外,甚至在屏幕上使用之后,如果我以后在用户的工作会话中重新显示该布局的话。我认为附件是加入/离开显示的UI的过程,但我不确定 动机:通知,以观察者模式 这并不重要,但我关心生命周期的原因显示在。如图所示,我想通知一群用户的布局(在UI中),关于他们的小部件所表示的数据的变化。因此,每个布局都需要
完成方法。但我怀疑我真的希望注册围绕附加和分离事件展开
附加/分离事件
该文档列出了许多附加/分离侦听器和attach
/detach
方法。如果有的话,我不确定应该使用哪一种。你的假设是正确的。当组件获得父集合时,它将附加到UI(通常是会话)。因此,该组件与客户机相关(但它现在可能在客户机中不可见)
处理此问题的一种方法是重写和/或detach()
,以启动逻辑来注册/取消注册
或者通过添加附加和分离的侦听器:for
实际上,它是否像覆盖附加
和分离
那样简单?另外,如果我没有对布局进行子类化,是否有办法作为附件/分离事件的侦听器订阅?我确实在文档中看到了一些这样的方法,但它们把我弄糊涂了。@BasilBourque我在答案中添加了关于听众的部分
def layout = new VerticalLayout()
layout.addAttachListener(new ClientConnector.AttachListener() {
@Override
void attach(ClientConnector.AttachEvent attachEvent) {
println "Attach: $attachEvent"
}
})
layout.addDetachListener(new ClientConnector.DetachListener() {
@Override
void detach(ClientConnector.DetachEvent detachEvent) {
println "Detach: $detachEvent"
}
})