Я не могу сохранить данные в объекте в одном представлении и получить к нему доступ (с данными в нем) из другого представления

1

Я пытаюсь сохранить набор объектов в ArrayList и получить к ним доступ в вспомогательном классе. Я использую Vaadin и навигатор просмотра для навигации по одному из представлений, которые берут ввод пользователя и переходят к другому представлению, которое отображает некоторые из них на графике. Представления - это вспомогательные классы. ArrayList из этих объектов был вне классов-помощников, и я попытался изменить модификаторы ArrayList (я пробовал статические и окончательные), и я попытался ссылаться на переменную изнутри вспомогательных классов, используя общее имя переменной, а также OuterClass.variableName. Причина, по которой я храню его как переменную, а не в базе данных (как представляется, является нормой для Vaadin CRUD), заключается в том, что у моего объекта есть списки других объектов внутри него, и я не мог понять, как получить гибкий ввод пользовательский интерфейс или подходящий контейнер для него (я не работал с Java в течение многих лет, и я новичок в vaadin). Я должен добавить, что нет синтаксических ошибок, но ArrayList всегда пуст.

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

Теги:
scope
view
vaadin
vaadin-navigator

2 ответа

2
Лучший ответ

У вас есть основной класс, который расширяет класс пользовательского интерфейса. Здесь вы можете добавлять свойства для хранения структур данных для каждого пользователя/экземпляра.

Вы можете получить доступ к классу пользовательского интерфейса практически из любого места вашего приложения vaadin. Через UI.getInstance() (и приведение к вашему основному классу) у вас есть доступ ко всему этому.

  • 0
    Благодарю за ваш ответ. Возможно, я неправильно понимаю ваше использование «свойств», но у меня были проблемы с использованием Vaadin ObjectProprties из-за списков объектов в моем главном объекте. Пользователь может ввести произвольное количество «характеристик» для каждого объекта, и каждая характеристика имеет несколько полей (двойные и строковые). Я не мог понять, как сделать свойства по мере необходимости в этом контексте.
  • 0
    Под свойствами я имею в виду обычные переменные или членов класса. Что касается типов данных, которые вам нужны, то вы должны использовать правильные структуры данных для хранения своих данных в нем. Для общих данных часто рекомендуется использовать хэш-карту. Но без дополнительной информации я не могу рекомендовать, какие структуры использовать.
Показать ещё 1 комментарий
3

Другое тогда ответ выше Вы можете использовать атрибуты сеанса Vaadin UI.

UI.getCurrent().getSession().setAttribute("button", new Button("Button"));
Button b = (Button) UI.getCurrent().getSession().getAttribute("button");

Другим возможным ответом являются, например, события - NavigateToViewEvent, который отправляет данные в выбранное представление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню