0

我正在尝试使用 MVP 模式开发 GWT 应用程序。到目前为止一切都很好,除了一种特定的操作案例:不更改 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 的上下文中实现这一点的模式吗?

任何帮助/想法表示赞赏。

4

2 回答 2

0

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

于 2011-03-13T19:04:37.340 回答
0

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

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

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

于 2010-04-14T05:07:11.193 回答