Панель Vaadin разделена между страницами

Я хочу создать объект панели (работающий как своего рода панель навигации), разделенный между страницами. Я хочу добавлять кнопки динамически, поэтому для меня важно, чтобы все страницы использовали один и тот же объект.

Однако, когда я добавляю панель на вторую страницу, она исчезает с первой! Почему это так?

А может есть какие советы как с этим бороться? :)


person mary jane    schedule 18.12.2011    source источник


Ответы (2)


Иерархия компонентов Vaadin позволяет одному компоненту одновременно находиться в одном месте. Другими словами, вы не можете добавить один и тот же экземпляр компонента в два места одновременно.

Лучшим решением будет переместить вашу панель так, чтобы панель никогда не заменялась, только окружение. Если это невозможно, вам нужно просто воссоздать элементы управления для каждой страницы.

Если ваши элементы управления сохраняют состояние, помните, что Свойства могут использоваться совместно между Полями, а все классы, расширяющие AbstractFields, являются Свойствами, поэтому вы можете делать такие вещи, как

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

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

Таким образом, ваши два текстовых поля поддерживаются одним и тем же свойством. Итак, после того, как значение изменилось, ваши два текстовых поля имеют одинаковое значение.

person Henrik Paul    schedule 18.12.2011

Я бы посоветовал вам взглянуть на FlexTabSheetNavigationFeeder компонент, который, насколько я понимаю, используется для создания универсального навигационного меню, соединяющего вид/контент с каждой из кнопок/вкладок компонента.

Я использую общую библиотеку фреймворка Vaadin, и у нас есть компонент под названием SFlexTabSheet, делающий именно то, что вам кажется нужным.

person AndroidHustle    schedule 19.12.2011