2011-06-14 129 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中的哪個字段。