2009-12-18 3 views
2

Я попытался отправить ArrayList службе RPC в GWT, но продолжает работать с ошибкой. Вот мой фрагмент кодаОтправка ArrayList в качестве параметра в GWT-RPC

   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 является ArrayList из QuestionChoice

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.I думаю, что нет ошибки в вашем коде. Можете ли вы отправить ошибку, которую вы получаете. – DonX

+0

Можете ли вы опубликовать подпись AddNewQuestion GreetingService? И ошибка, которую вы получаете (это происходит не во время компиляции или во время выполнения?) –

+0

Привет, ребята, я думаю, ошибка в моей среде разработки. Возможно, это было отсутствие обновления проекта, очистки проекта, перестройки, компиляции GWT и перезагрузки приложения. Вчера после размещения вопроса я сделал трюк, используя ArrayList вместо ArrayList . Сегодня утром, когда Loggin вернулся к stackoverflow (новый пользователь), поскольку ImJasonH потребовал подписи метода «addNewQuestion», я понял, что так сильно исказил свой код, что мне пришлось его перестроить, как это было, но, к моему удивлению, теперь это сработало! Он отправляет объект ArrayList на сервер. Спасибо, ребята :) – ivanceras

ответ

3

Да, в вызове GWT-RPC можно отправить ArrayList в качестве параметра. При разработке кода 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 @Верверная аннотация разрешена для реализации метода интерфейса. Кроме того, он может использовать языковой уровень java 1.6. – DonX

+0

Хорошо, но GWT жалуется на это. Когда вы используете @Override в реализованном методе, он вызывает ошибку, которая появляется в оболочке разработчика. Ну, по крайней мере, это происходит со мной. – Isac

+0

На самом деле эта проблема возникает, если вы используете GWT 1.5 и Java 1.6. Извини за это. – Isac