CachingActivityMapper有什么意义?

时间:2015-09-03 09:00:31

标签: gwt mvp gwt-activities gwt-places

CachingActivityMapper如果要求两次或更多次Place,则会返回相同的活动实例。但是,PlaceController如果我PlaceChangeRequestEvent的地方与当前地点相等,则不会触发PlaceChangeEvent(最终没有goTo(...))。因此,听取这些事件的ActivityManager将无法执行任何操作,也就是说,在这种情况下,它甚至不会向CachingActivityMapper询问活动。

所以,我并没有真正看到CachingActivityMapper的观点。我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

单独使用时,

CachingActivityMapper很少(没有)使用。这真的意味着在FilteredActivityMapperActivityMapper之间。

原始用例是主要细节;例如,对于邮件应用程序,有2 ActivityManager个,一个用于邮件列表(主邮件),另一个用于特定邮件(详细信息),我们可以想象第三个用于菜单或树视图;让我们专注于 master

  1. 目前的地方是MailBox("inbox")
    1. FilteredActivityMapper将该地点按原样传递给基础CachingActivityMapper
    2. 实际ActivityMapper返回“收件箱”
    3. 中邮件列表的活动
  2. 用户点击列表中的邮件,转到新地点Message(box="inbox", id="123")
    1. FilteredActivityMapper将地点转换为MailBox("inbox")
    2. CachingActivityMapper返回缓存的活动,而不实际调用已包装的ActivityMapper;因此,ActivityManager不会停止并启动活动,也不会触及HasOneWidget正在管理的活动。
  3. 可能存在变体,例如, detail 映射器可以缓存它看到的最后一个消息位置(其中消息的地方不会' t包含“邮箱”信息,即Message("123")),当它收到 MailBox 的地方时,它会将消息地方传递给基础{{ 1}},它将返回缓存的活动;这将允许更改为新的邮箱,同时仍然在详细信息面板中显示相同的消息(带分割显示的GMail的行为或多或少与此类似)。 / p>