2009-12-18 36 views
2

我試着發送一個ArrayList給GWT中的RPC服務,但是一直失敗。 這是我的代碼片段作爲GWT-RPC中的一個參數發送ArrayList

   greetingService.addNewQuestion(questionnaireKey, questionText, qcList, new AsyncCallback<Boolean>(){ 
       @Override 
       public void onFailure(Throwable caught) { 
        Window.alert("Something went wrong!\n"+caught.getMessage()); 

       } 
       @Override 
       public void onSuccess(Boolean result) { 
        Window.alert("Question Added!"); 
       } 

      }); 

QuestionChoice是沒有方法的簡單對象,qcList是QuestionChoice的ArrayList

public class QuestionChoice implements IsSerializable{ 
/** 
* 
*/ 
private static final long serialVersionUID = 5668640935838672293L; 
public String text; 
public boolean isCorrect; 

public QuestionChoice(){ 

} 
public QuestionChoice(String text, boolean isCorrect){ 
    this.text = text; 
    this.isCorrect = isCorrect; 
} 

}

有沒有人嘗試發送一個ArrayList作爲參數在GWT-RPC中? 如果你這樣做,請嘗試在這裏發佈你的示例代碼。 謝謝。

+0

是的。可以發送ArrayList在GWT Rpc中。我認爲你的代碼沒有錯誤。你可以發佈你所得到的錯誤。 – DonX 2009-12-18 03:38:10

+0

您可以發佈GreetingService的addNewQuestion簽名嗎?和你得到的錯誤(它在編譯時或運行時失敗?) – 2009-12-18 05:21:06

+0

嗨,大家好,我猜錯誤是在我的開發環境中。也許這是缺乏項目刷新,項目清理,重建,GWT編譯和應用程序引擎重新加載。 昨天發佈問題後,我使用ArrayList 而不是ArrayList 進行了調整。 今天早上,當loggin回到了stackoverflow(新用戶),因爲ImJasonH要求籤名的「addNewQuestion」方法,我意識到我已經變形了我的代碼,所以我不得不重建它,因爲它是,但我驚訝,它現在工作!它將ArrayList 對象發送到服務器。謝謝你們:) – ivanceras 2009-12-19 05:59:04

回答

3

是的,可以發送ArrayList作爲GWT-RPC調用中的參數。在開發GWT-RPC代碼時,很多時候在調用GWT-RPC中的請求時可能會遇到錯誤,這是由於GWT-RPC服務中的更改可能不符合客戶端編譯的GWT-RPC定義。要解決這個問題,只要在服務器端類或GWT-RPC服務定義(即GreetingService,GreetingServiceAsync和GreetingServiceImpl)中更改代碼,就必須重新啓動開發服務器。

1

如果您使用的是GWT 1.5和Java 1.6,問題在於@Override註釋,您並不是真正覆蓋了正在實現的方法。擺脫註釋,一切都應該很好。

+1

在java 1.6語言級別@Override註解允許實現接口方法also.ivanceras可以使用java 1.6語言級別。 – DonX 2009-12-18 12:27:20

+0

好的,但GWT抱怨。當您對已實現的方法使用@Override時,它會導致在開發人員shell中顯示的錯誤。那麼,至少它發生在我身上。 – Isac 2009-12-18 12:42:39

+0

實際上,如果您使用GWT 1.5和Java 1.6,則會發生此問題。對於那個很抱歉。 – Isac 2009-12-18 12:44:56