寻找关于浏览器历史记录更改的GWT / MVP操作的输入

时间:2010-04-13 23:17:49

标签: gwt mvp gwt-mvp gwt-history

我正在尝试使用MVP模式开发一个GWT应用程序。到目前为止,除了一个特定的操作案例之外这么好:不改变URL的操作(没有浏览器历史记录更改)。

在GWT MVP模式中,事件从演示者发送,app控制器捕获它们并更新浏览器历史记录。如果历史记录已更改,则视图会更新。

**历史发生变化的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 个答案:

答案 0 :(得分:0)

您是否正在使用一些自动进行历史记录更改的框架(除了GWT)?

常规GWT / MVP不需要进行历史记录更改,实际上通常由应用程序更新历史记录本身。

如果您想更新应用程序的状态而不更改历史记录,您可以使用EventBus发布应用程序的其他元素可以订阅的事件,以更新应用程序的状态而不更改历史记录。

答案 1 :(得分:0)

基本上,您必须创建自己的PlaceHistoryHandler。您的自定义PlaceHistoryHandler将忽略特定类型的PlaceChangeEvent(即它不会更新其Historian)。