2011-12-18 122 views
1

我想创建页面之间共享的面板对象(用作一种导航栏)。我想动态地添加按钮,所以对我来说所有页面共享相同的对象都很重要。页面之间共享的Vaadin面板

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

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

回答

3

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

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

如果你的控制是有状态的,记住,属性可以场之间共享,并扩展AbstractFields所有类属性,所以你可以做的东西一样

TextField tf1 = new TextField(); 
layout1.addComponent(tf1); 

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

这样,你的两个文本框是由备份相同的属性。所以,值改变后,你的两个文本域具有相同的值。

0

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

我使用Vaadin框架的通用库,我们有一个叫做SFlexTabSheet的组件,它正在做你想要做的事情。