Управление историей (кнопка "Обновить")
Пожалуйста, дайте мне представление об управлении данными в GWT. Я использую Gwt в своем проекте портала путешествий, и мои веб-страницы связаны с данными предыдущей страницы, но когда я нажимаю кнопку обновления браузера, мои данные теряются. поэтому, пожалуйста, сообщите мне, если есть какой-либо способ решить эту проблему.
4 ответа
Класс GWT History нельзя использовать для управления обновлением страницы (только назад / вперед).
Нажатие на кнопку обновления отправляет запрос на сервер, и состояние приложения перезагружается с сервера. Это все. Вы должны иметь дело с этим.
Если вы не хотите терять свои данные, вам нужно найти способ сохранить их на сервере, когда это необходимо.
Если у ваших пользователей есть современные браузеры, вы можете использовать функцию HTML5 localStorage для хранения данных в браузере между обновлениями страницы.
Проверьте эту ветку на поддерживаемый браузер.
Вы можете создать фрагмент URL для кодирования ваших данных.
String location = "ny"; History.newItem ("местоположение ="+ местоположение);
приведет к фрагменту URL-адреса www.example.com # location = ny
Затем, если браузер обновляется, вы можете декодировать фрагмент URL-адреса и определить, что это местоположение.
Для нескольких параметров вы можете создать сложный фрагмент и проанализировать его.
History.newItem ("старт" + = startLocation + "& конец ="+endLocation); Тогда URL будет выглядеть так: www.example.com#start=newyork&end=boston
Основная идея заключается в сохранении некоторого состояния во фрагменте URL (часть URL после #) - например, your-site.com/app#page-1
Чтобы прослушать изменения фрагмента, используйте GWT History
учебный класс. Фрагмент изменится, когда пользователь переместится назад / вперед или обновит страницу.
Таким образом, вы можете заставить свое приложение делать разные вещи, когда URL имеет #page-1
против #page-2
, так далее.
Более обобщенным и масштабируемым решением для этого является нечто вроде архитектуры Place gwt-platform (наряду с Presenters, которые также являются хорошей идеей для больших приложений)