我在GWT应用程序中创建了两个带UIBinder的java类。 我想借助在EntryPoint类中声明的常用方法将一个页面导航到另一个页面。
但是,我无法在UIBinder类的Button Click Event上访问EntryPoint类的方法。
我的代码:
HelloUIBinder hb;
@UiField Button btnLogin;
public Test2() {
initWidget(uiBinder.createAndBindUi(this));
btnLogin.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// TODO Auto-generated method stub
strEmail = txtEmail.getText().toString();
strPass = txtPass.getText().toString();
Window.alert(strEmail);
Window.alert(strPass);
hb.onLogin(strEmail, strPass);
}
});
}
在HelloUIBinder类中,
登录方法:
public void onLogin(String email, String pass)
{
Window.alert(email);
Window.alert(pass);
if(email == "abc@yahoo.com" && pass == "abc123")
{
RootPanel.get().clear();
tp = new TestPage();
RootPanel.get().add(tp);
animationHelper.goTo(tp, Animation.SLIDE);
}
else
{
Window.alert("Authentication Failed");
}
}
但是,虽然这个方法我得到UmbrellaException错误消息。 如果我在UIBinder类中编写相同的逻辑,那么它将进行良好的条件检查。
现在我想通过使用类对象来使用来自不同类的方法。
有人有想法吗?
请帮助解决此错误,以便从不同的类中调用方法。
提前致谢。
答案 0 :(得分:0)
您应该从Umbrella例外和可能的UIBinder模板发布堆栈跟踪。
我真的建议使用场所更改事件和历史记录器来进行活动更改。你应该看一下Ray Ryan的视频
Google I / O 2009 - 构建GWT应用程序的最佳实践 http://www.youtube.com/watch?v=PDuhR18-EdM
Google I / O 2010 - 构建GWT应用程序 http://www.youtube.com/watch?v=M5x6E6ze1x8
我们一直在使用MVP并为我们的许多项目提供历史记录,并且效果非常好。您可以使用简单导航或使用placeContorller.goTo(new Place());方法。这也使书签和后退按钮能够正常工作。
另一个选项是您可以在入口点构建ClientFactory单例实现,并使用它来处理简单的导航事件。但是,如果您的应用程序在未来的地方变得更加复杂,那么控制器是可行的。