Требуется ввод данных о действии GWT / MVP без изменения истории браузера
Я пытаюсь разработать приложение GWT с шаблоном MVP. Пока все хорошо, за исключением одного конкретного случая действий: действий, которые не меняют URL (без изменения истории браузера).
В шаблоне GWT MVP события отправляются от докладчиков, контроллер приложения ловит их и обновляет историю браузера. Если история изменилась, то представление обновляется.
** MVP с изменением истории (работает хорошо)**
Current URL is /list
User clicks on contactdelete button.
Fire DeleteContactAction event.
App controller catches, change history to 'delete'
onValueChange is called
if (token.equals("delete"))
delete contact screen, then delete contact
Fire ContactDeletedEvent
app controller catches and change the history to list
onValueChange is called: contact list refreshes
Шаблон GWT MVP для диалогового окна без изменений истории
** Проблема ** - я использую диалоговое окно и не хочу изменять историю браузера, поэтому вот проблема:
Current URL is /list
User clicks on contactdelete button.
Contact is deleted
Fire ContactDeletedEvent.
App controller catches, change history to 'list'
**onValueChange is NOT called** because url is already /list and there is no change
# problem: contact list does not refresh
Вопрос: кто-нибудь знает шаблон для реализации этого в контексте MVP?
Любая помощь / идея приветствуется.
2 ответа
По сути, вам придется создать свой собственный PlaceHistoryHandler. Ваш пользовательский PlaceHistoryHandler будет игнорировать определенный тип PlaceChangeEvent (т.е. он не будет обновлять свой Historian).
Используете ли вы какую-то платформу (кроме GWT), которая автоматически меняет историю?
Обычный GWT/MVP не требует внесения изменений в историю, и на самом деле, как правило, приложение самостоятельно обновляет историю.
Если вы хотите обновить состояние приложения без изменения истории, вы можете использовать EventBus для публикации событий, на которые могут подписаться другие элементы приложения, для обновления состояния приложения без изменения истории.