Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Vaadin面板在页面之间共享_Java_Panel_Vaadin - Fatal编程技术网

Java Vaadin面板在页面之间共享

Java Vaadin面板在页面之间共享,java,panel,vaadin,Java,Panel,Vaadin,我想创建页面之间共享的面板对象(作为一种导航栏)。我想动态添加按钮,所以所有页面共享同一个对象对我来说很重要 然而,当我将面板添加到第二页时,它会从第一页消失!为什么会这样 也许有什么应对的方法吗?:) Vaadin组件层次结构允许一个组件一次位于一个位置。换句话说,不能同时将同一组件实例添加到两个位置 最好的解决方案是移动面板,这样面板就不会被更换,只会被周围的环境所取代。如果不可能,只需重新创建每个页面的控件 如果控件是有状态的,请记住属性可以在字段之间共享,并且扩展AbstractFiel

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

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


也许有什么应对的方法吗?:)

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

最好的解决方案是移动面板,这样面板就不会被更换,只会被周围的环境所取代。如果不可能,只需重新创建每个页面的控件

如果控件是有状态的,请记住属性可以在字段之间共享,并且扩展AbstractFields的所有类都是属性,因此可以执行以下操作

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

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

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

我建议您查看
FlexTabSheetNavigationFeeder
一个组件,据我所知,该组件用于创建通用导航菜单,将视图/内容连接到组件的每个按钮/选项卡

我使用了一个Vaadin框架的公共库,我们有一个名为SFlexTabSheet的组件,它正是您听起来想要做的