Utilisation de RPC avec une classe en retour
Bonsoir tout le monde !!!
j'arrive parfaitement à récupérer les données stockées dans mon datastore avec un retour de RPC en String[] (le code ci-dessous fonctionne !!!).
Par contre, je n'arrive pas à récupérer ces données avec en retour, ma classe Experience (par exemple void getExperiences(AsyncCallback<List<Experience>> callback); !!!
un coup j'obtiens une erreur 500 après le déploiement ! un coup je n'arrive pas à compiler (did you forget to inherit a required module) ... je deviens fou :-) Comment dois-je m'y prendre ???
Merci pour votre aide !!!
Code:
1 2 3 4 5 6 7 8 9
|
package com.morey.xxx.client;
import java.util.List;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@RemoteServiceRelativePath("experience")
public interface ExperienceService extends RemoteService {
public String[] getExperiences();
} |
Code:
1 2 3 4 5 6 7
|
package com.morey.xxx.client;
import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface ExperienceServiceAsync {
void getExperiences(AsyncCallback<String[]> callback);
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
package com.morey.xxx.server;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.morey.xxx.client.ExperienceService;
public class ExperienceServiceImpl extends RemoteServiceServlet implements ExperienceService {
private static final long serialVersionUID = 1L;
private static final Logger LOG = Logger.getLogger(ExperienceServiceImpl.class.getName());
private static final PersistenceManagerFactory PMF = JDOHelper.getPersistenceManagerFactory("transactions-optional");
public String[] getExperiences() {
PersistenceManager pm = getPersistenceManager();
List<String> symbols = new ArrayList<String>();
try {
String query = "select from " + Experience.class.getName();
List<Experience> Experiences = (List<Experience>) pm.newQuery(query).execute();
for (Experience experience : Experiences) {
symbols.add(experience.getTitre());
}
} finally {
pm.close();
}
String[] ret = new String[symbols.size()];
int i = 0;
for (String s : symbols) {
ret[i] = s;
i++;
}
return ret;
}
private PersistenceManager getPersistenceManager() {
return PMF.getPersistenceManager();
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
@UiHandler({ "buttonListe" })
void onClickListe(ClickEvent e) {
ExperienceServiceAsync ExperienceService = GWT
.create(ExperienceService.class);
ExperienceService.getExperiences(new AsyncCallback<String[]>() {
public void onFailure(Throwable error) {
Window.alert(error.getMessage());
}
public void onSuccess(String[] experiences) {
DisplayExperiences(experiences);
}
});
public void DisplayExperiences(String[] experiences) {
Grid g = new Grid(5, 5);
g.setText(1, 1, experiences[1]);
g.setText(1, 2, experiences[2]);
g.setText(1, 2, experiences[3]);
g.setText(1, 2, experiences[4]);
g.getCellFormatter().setWidth(0, 2, "256px");
centre.clear();
centre.add(g);
} |