我正在使用gwtp框架开发gwt2.3应用程序。在这个应用程序中,我有一个登录(索引)页面,这是由客户端模块绑定。
bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.login);
现在成功登录后,将触发一个新的名称令牌名称用户页面。
History.newItem(NameTokens.userconsole,true);
现在我有我的历史处理程序如下:
公共类NameTokenHandler实现ValueChangeHandler {
@Override
public void onValueChange(final ValueChangeEvent<String> event) {
System.out.println("Nothing to do");
}
}
我在入口点类中添加了如下的History:
History.addValueChangeHandler(new NameTokenHandler());
现在我已经重写了onValueChange方法&我留空了。
所以当应用程序首先加载或任何其他名称令牌触发时,它应该首先调用onValueChange因为这个方法中没有代码,所以不应该加载任何东西。
但在应用中它工作得很好。即使在onValueChange中没有代码,所有的名称令牌也会成功触发。我不知道如何防止历史令牌的发射?
请帮帮我。
因此,当应用程序首先加载或任何其他名称令牌触发时,它应该首先调用onValueChange,并且由于该方法中没有代码,因此不应该加载任何内容。
如果你正在使用gwtp History ValueChangeHandler将不会阻止或启用导航到应用程序的特定部分。这些都是由PlaceManager处理的
经过一番谷歌搜索,我了解了位置管理器。我正在向历史记录添加一个更改处理程序。所有的更改处理程序已经添加的仍然在那里。特别是GWTP的那个PlaceManagerImpl构造函数。
如果你真的想阻止某些历史事件被GWTP,我建议,在您的自定义PlaceManager中,您覆盖onValueChange(…),拦截您想要阻止的令牌,以及调用父类的onValueChange来获取你希望GWTP处理的令牌正常。