У меня есть переменная сеанса, которая необходима для фильтрации моего JPA запроса следующим образом:Загрузка переменной сеанса до начала строительства UI
activities = JPAContainerFactory.make(ActivityEntity.class, DCSAdminUI.PERSISTENCE_UNIT);
activities.addContainerFilter(new Compare.Equal("organisation.rowid", OrgID));
Мое мнение может получить переменную сеанса в методе enter()
следующим образом:
@Override
public void enter(ViewChangeEvent event) {
OrgID = (String) VaadinService.getCurrentRequest().getWrappedSession().getAttribute("org");
buildLayout();
}
Проблема в том, что я не знаю, как взять переменную из метода enter()
и использовать ее при построении пользовательского интерфейса. Как вы можете видеть из приведенного выше метода enter()
, я вручную вызываю buildLayout()
, который выполняет построение пользовательского интерфейса. Это работает, но я получаю представление, которое реконструируется внутри себя каждый раз, когда я перехожу к другому виду и обратно к этому. Я знаю, что enter()
вызывается перед конструктором, но то, что я не понимаю, почему конструктор не кажется, называется, если я явно не называть его в методе enter()
Любая помощь или указатели будут оценены
Осторожно с терминологией, «конструктор» имеет очень специфическое значение на земле Java. Я предполагаю, что с «конструктором» вы ссылаетесь на этот метод buildLayout() здесь, а не на конструктор некоторого класса. – Gimby
Под «конструктором» я имел в виду фактический конструктор, потому что я попытался использовать ручной метод 'buildLayout()', а также попытался загрузить переменную непосредственно в конструктор (без метода 'buildLayout()') на основе того, что я прочитал что конструктор автоматически вызывается после метода 'enter()'. Если я ошибаюсь, тогда вы правы, и мне нужно быть осторожным с терминологией! – Mimzo
Итак, вы говорите о реальном конструкторе. Увы, вы, по-видимому, не можете быть конкретными в отношении какого конструктора, о котором вы говорите. Конструкторы не получают вызовы с помощью фреймворков или кода, они вызываются JVM под водой, когда создается новый экземпляр объекта. Если вы говорите о конструкторе класса, который этот метод enter() является частью, то он наиболее определенно вызывается перед вызовом enter(), а не после. – Gimby