Vaadin面板在页面之间共享

时间:2011-12-18 11:13:58

标签: java panel vaadin

我想创建页面之间共享的面板对象(作为一种导航栏)。我想动态添加按钮,因此对我来说重要的是所有页面共享同一个对象。

然而,当我将面板添加到第二页时,它会从第一页消失!为什么会这样?

也许有任何提示如何处理它? :)

2 个答案:

答案 0 :(得分:3)

Vaadin组件层次结构允许一个组件一次位于一个位置。换句话说,您不能将同一个Component实例同时添加到两个位置。

最好的解决方案是移动面板,使面板永远不会被更换,只有周围环境。如果这是不可能的,您只需重新创建每个页面的控件。

如果您的控件是有状态的,请记住可以在Fields之间共享Properties,并且所有扩展AbstractFields的类都是Properties,因此您可以执行类似

的操作
TextField tf1 = new TextField();
layout1.addComponent(tf1);

TextField tf2 = new TextField();
tf2.setPropertyDataSource(tf1);
layout2.addComponent(tf2);

这样,您的两个文本字段将由同一属性备份。因此,在值更改后,您的两个文本字段具有相同的值。

答案 1 :(得分:1)

我建议你看看FlexTabSheetNavigationFeeder一个组件,根据我的理解,该组件用于创建将视图/内容连接到组件的每个按钮/标签的通用导航菜单。

我使用Vaadin框架的公共库,我们有一个名为SFlexTabSheet的组件,它完全按照你想要的那样做。