Панель Vaadin разделена между страницами - PullRequest
2 голосов
/ 18 декабря 2011

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 декабря 2011

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

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

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

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

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

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

1 голос
/ 19 декабря 2011

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

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

...