2011-06-28 70 views
0

我使用Google GWT和RPC。在客戶端是類SplitDatenhalter。這工作正常:Google GWT RPC Vector

Vector <SplitDatenhalter> vec = new Vector<SplitDatenhalter>(); 
vec.add(new SplitDatenhalter("a", "b", "c","D")); 
vec.add(new SplitDatenhalter("ab", "bc", "dc","Dee")); 

如何發送到服務器端?

更新

我在客戶端類SplitDatenhalter。見下文,

public class SplitDatenhalter implements Serializable{ 

private static final long serialVersionUID = 1L; 
String name ; 
String vorname; 
String nachname; 
String email; 


public SplitDatenhalter(String name, String vorname, String Nname, String Email) {  
    this.name = name; 
    this.vorname = vorname; 
    this.nachname = Nname; 
    this.email = Email; 
} 

public String getName() { 
    return name; 
} 
//others setter and getter Function 

客戶端側具有MyService

public interface MyService extends RemoteService 
{  
    public void myVector(Vector<SplitDatenhalter> vec); 
} 

另一個接口:

public interface MyServiceAsync { 
    public void myVector(Vector <SplitDatenhalter> vec, 
       AsyncCallback <Void> callback); 
} 

這是服務器側:

public void myVector(Vector <SplitDatenhalter> vec) 
{ 
    // TODO Auto-generated method stub 
    System.out.println("vector"); 
    for (int i = 0; i < vec.size(); i++) { 
     this.name = vec.get(i).getName(); 
     this.name = vec.get(i).getVorname(); 
     this.name = vec.get(i).getNachname(); 
     this.name = vec.get(i).getEmail(); 
    } 
} 

此代碼部分來自客戶端:

Vector<SplitDatenhalter> vect = new Vector<SplitDatenhalter>(); // TODO Auto-generated method stub 
MyServiceAsync svc = (MyServiceAsync) GWT.create(MyService.class); 
ServiceDefTarget endpoint = (ServiceDefTarget) svc; 
// endpoint.setServiceEntryPoint("/myService"); 

// define a handler for what to do when the service returns a result 
@SuppressWarnings("rawtypes") 
AsyncCallback callback = new AsyncCallback() 
{ 
    @Override 
    public void onFailure(Throwable caught) { 
     // TODO Auto-generated method stub 
     System.out.println("Fehler"); 
    } 

    //@Override 
    public void onSuccess(Object result) { 
     // TODO Auto-generated method stub 
     System.out.println(result.toString()); 
    } 
}; 
this.vect.add(new SplitDatenhalter(this.name, Vname, Nname, Email)); //this a part from Function 

我需要這部分代碼

public static MyServiceAsync getService() 
{ 
    MyServiceAsync svc = (MyServiceAsync) GWT.create(MyService.class); 
    ServiceDefTarget endpoint = (ServiceDefTarget) svc; 
    endpoint.setServiceEntryPoint("/myService"); 
    return svc; 
} 

最後一部分:執行此函數

@ SuppressWarnings("unchecked") 
public void vectorExe() 
{ 
    System.out.println("vectorExe befor"); 
    getService().myVector(this.vect, callback); 
} 

後,我從onFailure(Throwable caught)得到一個錯誤。我哪裏做錯了?

回答

0

您可以在客戶端使用矢量並把它傳遞FTO服務器端(see reference

也許你SplitDatenhalter類是不可序列化。有什麼問題?