- Да, в этом и есть смысл
Application
объекта.Вы можете хранить и получать доступ к данным всего приложения (обычно к конфигурации) через ваш Application
подкласс в любой точке. - Нет.Существуют случаи, когда вам необходимо обмениваться данными сеанса на нескольких страницах, когда более целесообразно хранить их в объекте
Session
.(Примером может быть логин пользователя, который определенно принадлежит сеансу и может использоваться любой страницей.) Конечно, вы можете передавать данные между страницами, но это не очень хорошая стратегия.Где точка отсечения будет вашим решением: если данные распределяются между двумя страницами, вы можете захотеть передать их с одной на другую, если есть 20 страниц, вы определенно не захотите. - Вы не должны повторно использовать экземпляры компонентов на разных страницах.Конечно, вы будете использовать класс повторно, но вам придется создавать новый на каждой странице.Именно здесь может пригодиться хранение данных в объекте
Session
.
Для пояснения: состояние общего количества страниц указывает на то, куда поместить данные, но что действительно важно, так это то, какВы хотите, чтобы элементы, разделяющие данные, были связаны друг с другом:
Если вы передадите данные в виде параметров между страницами, они образуют тесно связанную группу.В зависимости от того, что представляют страницы, это может быть желательно.Примером этого может служить последовательность страниц в стиле мастера, где каждая страница знает, что представляют собой страницы до и после.
Но в примере входа в систему мы видим обратное: компонент, заполняющий имя входа (возможно,какая-то форма входа в систему) не должны знать о том, какие другие компоненты собираются ее использовать.Таким образом, логическое решение состоит в том, чтобы сохранить имя входа в сеансе и позволить каждому компоненту извлекать его по мере необходимости.
Существует несколько способов получить текущий объект Session
.Проверьте документацию класса , чтобы узнать, как это сделать.
Чтобы суммировать полученную информацию: Wicket не рекомендует использовать свойства типа небезопасных сеансов, не предоставляя общих setProperty
-подобных методов.Вместо этого вы должны расширить Session
, или для большинства проектов, более адекватно, WebSession
и поместить безопасные для типов свойства в этот класс.Затем вы переопределяете newSession
в своем классе приложения.