Мне было интересно, как сохранить приложение, когда пользователь полностью покидает приложение, переходя на другой сайт (например, когда пользователь входит в приложение, затем переходит на nytimes.com, а затем возвращается в приложение, некоторые компоненты пропадают). Чтобы сохранить приложение при обновлении, вы можете использовать аннотацию @PreserveOnRefresh, но это не сохранит приложение, когда вы его покинете. Верхний колонтитул, меню и нижний колонтитул исчезают. Эти три компонента имеют свой собственный класс и объявлены только в основном пользовательском интерфейсе. Каждое представление (или страница) имеет свой собственный класс (который находится между меню и нижним колонтитулом). Все работает нормально, пока пользователь не покинет веб-страницу и не вернет верхний колонтитул, меню и нижний колонтитул. Итак, мой вопрос: как сохранить мое приложение vaadin, когда пользователь покидает его и возвращается?
Сохранение приложения в vaadin
Ответы (3)
Ну, может быть проблема с сериализацией и десериализацией из сессии. Убедитесь, что вы реализовали интерфейс Serialization
для своих классов.
Вы пробовали repaint
отсутствующие компоненты? Они должны быть установлены на setImmediate(false)
во время repaintRequest
.
Во всяком случае, обычное приложение Vaadin работает без проблем после возврата с другого URL-адреса. Удачи.
Чтобы решить эту ситуацию, вы можете добавить прослушиватель в навигатор, который получит uri на страницу, на которую вы переходите, и проверит ваши разрешения. Если у вас нет разрешения, вы останетесь на той же странице и получите уведомление о том, что вам не разрешено заходить на эту страницу. Если они разрешены, вы продолжите направлять их на эту страницу.
Какие компоненты отсутствуют, когда вы возвращаетесь к приложению? Приложение Vaadin живет столько же, сколько и веб-сессия. Если я зайду на nytimes.com, а затем вернусь до окончания веб-сеанса, приложение Vaadin сохранится (если оно имеет @PreserveOnRefresh
) или будет обновлено.