2011-06-14 128 views
0

我有我的代码有问题,我似乎无法修复它。我想在提交按钮时将一些客户数据添加到java/GWT中的数组列表中。GWT/JAVA未捕获的异常逃脱

我从中添加数据的形式。

ok.addClickHandler(new ClickHandler() { 
     public void onClick(ClickEvent event) { 
      if (!voornaamTB.getText().equalsIgnoreCase("") && !achternaamTB.getText().equalsIgnoreCase("") && !emailTB.getText().equalsIgnoreCase("") && !geboortedatumTB.getText().equalsIgnoreCase("")) { 
       boolean addVG; 
       System.out.println(voornaamTB.getText()); 
       System.out.println(tussenvoegselTB.getText()); 
       System.out.println(achternaamTB.getText()); 
       System.out.println(emailTB.getText()); 
       System.out.println(geboortedatumTB.getText()); 
--> the error is generated here addVG = VGC.addVakantieganger(voornaamTB.getText(), tussenvoegselTB.getText(), achternaamTB.getText(), emailTB.getText(), geboortedatumTB.getText()); 
       if (addVG) { 
        Window.alert("Vakantieganger toegevoegd."); 
       } else { 
        Window.alert("Vakantieganger niet toegevoegd."); 
       } 
      } else { 
       voornaamTB.addStyleName("invalide-TextBox"); 
       tussenvoegselTB.addStyleName("invalide-TextBox"); 
       achternaamTB.addStyleName("invalide-TextBox"); 
       emailTB.addStyleName("invalide-TextBox"); 
       geboortedatumTB.addStyleName("invalide-TextBox"); 
      } 
     } 
    }); 

控制器类。

import java.util.ArrayList; 

import com.vakantievibes.client.domein.Vakantieganger; 

public class VakantiegangerController { 
    private String msg; 
    private ArrayList<Vakantieganger> vakantiegangers = new ArrayList<Vakantieganger>(); 

    public VakantiegangerController(){ 

    } 

@SuppressWarnings("static-access") 
public boolean heeftVakantieganger(String email) { 
    boolean result = false; 
    for (Vakantieganger v : vakantiegangers) { 
     if (v.getEmail().equalsIgnoreCase(email)){ 
      result = true; 
     } 
    } 
    return result; 
} 

public boolean addVakantieganger(String voornaam, String tussenvoegsel, String achternaam, String email, String geboortedatum) { 
    //boolean result = false; 

    //if (!heeftVakantieganger(email)) { 
     Vakantieganger v = new Vakantieganger(voornaam, tussenvoegsel, achternaam, email, geboortedatum); 
     vakantiegangers.add(v); 
     boolean result = true; 
     System.out.println("klant toegevoegd"); 
    //} 
     return result; 
    } 

} 

与方法addVakantieganger它应该将数据添加到arraylist。但它似乎并没有这样做,它应该然后报告真实的形式。 !heeftVakantieganger(电子邮件)应该检查该人是否已经在阵列列表中,但现在已被禁用以用于测试目的

我在eclipse中收到的错误。

14:17:03.207 [ERROR] [vakantie_vibes] Uncaught exception escaped 

com.google.gwt.event.shared.UmbrellaException: One or more exceptions caught, see full set in UmbrellaException#getCauses 
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129) 
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:124) 
    at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 
    at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:172) 
    at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1321) 
    at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1277) 
    at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:132) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: java.lang.NullPointerException: null 
    at com.vakantievibes.client.GUI.FormToevoegenVakantieganger$8.onClick(FormToevoegenVakantieganger.java:153) 
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54) 
    at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) 
    at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1) 
    at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) 
    at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) 
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) 
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:124) 
    at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 
    at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:172) 
    at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1321) 
    at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1277) 
    at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:132) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 
    at java.lang.Thread.run(Thread.java:679) 
+0

为什么在那里有一个@ SuppressWarnings注解?这是一个很大的标志,应该被调查:在那里调用哪种方法是'静态'? – 2011-06-14 12:32:39

+0

请同时添加完整的堆栈跟踪。 – 2011-06-14 12:40:06

+0

是来自eclipse中开发模式控制台的错误日志吗? – Aegis 2011-06-14 12:42:12

回答

3

由于您使用所有变量,此时只有VGC可以是null

但我怀疑这是一个班级名称。我的第一个猜测是,类型VGC是服务器API的一部分,而不是客户端API的一部分或沿着这些线的东西。

+0

其学校项目,通常它会在共享或服务器包,但现在它的设置作为客户端的子包。 – Aegis 2011-06-14 21:19:58

+0

如果'System.out.println(VGC)'(或'VGC.class',如果前者给你编译错误),你会得到什么? – 2011-06-15 07:20:49

+0

你在哪里正确的VGC是空的,因为还没有初始化它。 – Aegis 2011-06-15 10:20:56

4

您收到NullPointerException。发生这种情况是因为您使用的参考是null。在你的情况下,这是你标记的行中的一个字段。

使用调试器,在该行上放置断点,然后检查null中的哪个字段。