2012-08-29 78 views
1

我想调用不同类的方法来浏览页面。不同类的GWT类方法不调用和获取UmbrellaException

所以我通过“UserID”&“密码”进行身份验证,然后它将导航到下一页。

我的代码:

public class Test2 extends Composite { 

HelloUIBinder hb; 

AnimationHelper animationHelper; 
TestPage tp; 

String strEmail, strPass; 

private static Test2UiBinder uiBinder = GWT.create(Test2UiBinder.class); 

interface Test2UiBinder extends UiBinder<Widget, Test2> { 
} 

@UiField TextBox txtEmail; 
@UiField PasswordTextBox txtPass; 
@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); 

      GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { 

       @Override 
       public void onUncaughtException(Throwable e) { 
        // TODO Auto-generated method stub 
        Throwable un = unwrap(e); 

        Window.alert(un.toString()); 
       } 
      }); 

      hb.onLogin(strEmail, strPass); 
     } 
    }); 
} 

public Throwable unwrap(Throwable e) 
{ 
    if(e instanceof UmbrellaException) 
    { 
     UmbrellaException ue = (UmbrellaException) e; 
     if(ue.getCauses().size() == 1) 
     { 
      return unwrap(ue.getCauses().iterator().next()); 
     } 
    } 
    return e; 
} 
} 

通过这个代码,我想传递两个参数来调用onLogin()HelloUIBinder类的方法。

代码onLogin:

public void onLogin(String email, String pass) 
{ 
    Window.alert(email); 
    Window.alert(pass); 

    if(email == "[email protected]" && pass == "abc123") 
    { 
     RootPanel.get().clear(); 

     tp = new TestPage(); 
     RootPanel.get().add(tp); 

     animationHelper.goTo(tp, Animation.SLIDE); 
    } 
    else 
    { 
     Window.alert("Authentication Failed"); 
    } 
} 

但是,在运行应用程序我收到错误消息:

"com.google.gwt.core.client.JavaScriptException: (TypeError): 'null' is not an object" 

那么,什么是一个问题,关于这个错误?

请尽快告诉我任何解决方案。

在此先感谢。

回答

1

本质上,我们有一个NullPointerException。 onLogin中唯一可以为null的东西似乎是animationHelper,并且您没有发布任何代码来初始化它。然而,有一个堆栈跟踪会更可靠。你应该改变你的代码来提供跟踪。如果您需要更多,你应该

  • 后堆栈跟踪
  • 后用来初始化animationHelper
代码信息
相关问题