如何防止代码在gwt中触发历史记录后执行?

时间:2011-09-09 13:47:59

标签: gwt history gwt-platform gwt-history

我正在使用gwtp框架处理gwt2.3应用程序。在这个应用程序中,我有一个登录(索引)页面,它由客户端模块绑定。

bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.login);

现在,在成功登录后,将触发新的名称标记名称用户页面。

     History.newItem(NameTokens.userconsole,true);

现在我的历史记录处理程序如下:

public class NameTokenHandler实现了ValueChangeHandler {

@Override
public void onValueChange(final ValueChangeEvent<String> event) {
    System.out.println("Nothing to do");
}

}

我在入口点类中添加了以下历史记录:

History.addValueChangeHandler(new NameTokenHandler());

现在我已经覆盖了onValueChange方法&amp;我把它留空了。

因此,当应用程序首先加载或任何其他名称标记触发时,它应首先调用onValueChange 因为这个方法中没有代码,所以不应该加载。

但在应用程序中,它工作正常。即使onValueChange中没有代码,所有名称标记也会成功触发。我没有得到如何阻止历史令牌的触发?

请帮帮我。

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

因此,当应用程序首先加载或任何其他名称标记触发时,它应首先调用onValueChange,因为此方法中没有代码,所以不应加载任何内容。

如果您使用 gwtp 历史记录,ValueChangeHandler将不会阻止或启用导航到应用程序的特定部分。这都是用PlaceManager处理的。

答案 1 :(得分:0)

经过一些谷歌搜索后,我开始了解场地经理。 我正在为History添加一个更改处理程序。所有的改变处理程序 已添加已经存在。特别是GWTP中的那个 PlaceManagerImpl构造函数。

如果你真的想阻止某些历史事件被处理 GWTP,我建议你在自定义的PlaceManager中 覆盖onValueChange(...),拦截你想要阻止的标记,和 为您希望GWTP处理的令牌调用父级的onValueChange 一般。