我正在使用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中没有代码,所有名称标记也会成功触发。我没有得到如何阻止历史令牌的触发?
请帮帮我。
提前致谢。
答案 0 :(得分:1)
因此,当应用程序首先加载或任何其他名称标记触发时,它应首先调用onValueChange,因为此方法中没有代码,所以不应加载任何内容。
如果您使用 gwtp 历史记录,ValueChangeHandler将不会阻止或启用导航到应用程序的特定部分。这都是用PlaceManager处理的。
答案 1 :(得分:0)
经过一些谷歌搜索后,我开始了解场地经理。 我正在为History添加一个更改处理程序。所有的改变处理程序 已添加已经存在。特别是GWTP中的那个 PlaceManagerImpl构造函数。
如果你真的想阻止某些历史事件被处理 GWTP,我建议你在自定义的PlaceManager中 覆盖onValueChange(...),拦截你想要阻止的标记,和 为您希望GWTP处理的令牌调用父级的onValueChange 一般。