Je suis nouveau en gwt. et j'ai besoin de savoir comment utiliser JSON dans gwt donc j'essaye ce simple chargeur de données mais je suis toujours confuse.
Je crée un projet nommé 'tesdb3' dans eclipse. Je crée le côté PHP pour accéder à la base de données, et fait la sortie en JSON ..
Je crée le userdata.php dans le dossier guerre. alors je compile le projet tesdb3. Dossier tesdb3 et le userdata.php en guerre déplacé dans le serveur local (j'utilise WAMP). J'ai mis le PHP dans le dossier tesdb3. Ceci est le résultat de mon localhost/phpmyadmin/tesdb3/userdata.phpComment traduire, utiliser JSON dans GWT?
[{"kode":"002","nama":"bambang gentolet"}{"kode":"012","nama":"Algiz"}]
De ce résultat, je pense que le côté PHP fonctionnait bien.
Je crée ensuite UserData.java comme superposition JSNI comme ceci:
package com.tesdb3.client;
import com.google.gwt.core.client.JavaScriptObject;
class UserData extends JavaScriptObject{
protected UserData() {}
public final native String getKode() /*-{ return this.kode; }-*/;
public final native String getNama() /*-{ return this.nama; }-*/;
public final String getFullData() {
return getKode() + ":" + getNama();
}
}
finalement dans le tesdb3.java:
public class Tesdb3 implements EntryPoint {
String url= "http://localhost/phpmyadmin/tesdb3/datauser.php";
private native JsArray<UserData> getuserdata(String json)
/*-{
return eval(json);
}-*/;
public void LoadData() throws RequestException{
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));
builder.sendRequest(null, new RequestCallback(){
@Override
public void onError(Request request, Throwable exception) {
Window.alert("error " + exception);
}
public void onResponseReceived(Request request,
Response response) {
//1
//data(getuserdata(response.getText()));
//2
JsArray<UserData> uda = JsonUtils.unsafeEval(response.getText())
data(uda);
}
});
}
public void data(JsArray<UserData> data){
for (int i = 0; i < data.length(); i++) {
String lkode =data.get(i).getKode();
String lname =data.get(i).getNama();
Label l = new Label(lkode+" "+lname);
tb.setWidget(i, 0, l);
}
RootPanel.get().add(new HTML("my data"));
RootPanel.get().add(tb);
}
public void onModuleLoad() {
try {
LoadData();
} catch (RequestException e) {
e.printStackTrace();
}
}
}
Le résultat à la fois méthode que je l'utilise dans le onResponseReceived est le même. Juste montrant la chaîne "mes données".
mais la méthode 2 créer eror comme ceci:
14: 41: 59,875 [ERREUR] [tesdb3] Uncaught exception échappé com.google.gwt.core.client.JavaScriptException: (SyntaxError): erreur de syntaxe
Ai-je manqué d'utiliser la 2ème méthode?
Pourquoi la méthode 1 n'a pas eu d'erreur mais ne peut pas afficher les données?
Je vais essayer votre exemple et modifier la question. merci – user315196