IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

Prise en main de JSON avec GWT


Sujet :

GWT et Vaadin Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut Prise en main de JSON avec GWT
    Bonjour à tous,

    Voilà, je souhaite découvrir Ajax, et j'ai récemment découvert GWT. Etant donné que le framework a l'air plutôt sympa, je suis parti là dessus.

    Le truc, c'est que je me sert d'un hébergement free pour mettre mon appli. D'après ce que j'ai compris, il faut dans ce cas utiliser JSON pour communiquer avec la partie server, car un tel hébergement ne supporte pas tomcat.

    Malheureusement, je n'arrive pas trop bien à comprendre l'exemple JSON fourni avec le GWT. Si quelqu'un a des pistes pour débuter, je suis preneur

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Bon, alors j'ai trouvé un petit tuto sur le net qui m'a permis d'avancer un peu:
    http://angel.hurtado.googlepages.com/tutorialgwt2

    Bon, maintenant, mon code est écrit, et il me faut tester tout ça. Je suis donc les instructions données par google.

    Tout va bien jusqu'au step 4. A la compilation, j'obtiens des erreurs du style:
    [ERROR] Line 8: The import com.google.gwt.json cannot be resolved
    [ERROR] Line 9: The import com.google.gwt.json cannot be resolved
    [ERROR] Line 10: The import com.google.gwt.json cannot be resolved
    [ERROR] Line 11: The import com.google.gwt.json cannot be resolved
    [ERROR] Line 12: The import com.google.gwt.json cannot be resolved
    [ERROR] Line 13: The import com.google.gwt.json cannot be resolved
    Bizarrement, ce ne sont que les imports JSON qu'il ne trouve pas, les autres imports relatifs au GWT ne produisent pas d'erreur. Ce n'est donc pas un problème de classpath. D'autre part, j'ai vérifié le .jar de GWT, et toutes les classes JSON sont bien dedans.

    D'où pourrait venir mon problème?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Google est quand même un outil formidable !

    Bon, la solution est de rajouter:
    <inherits name='com.google.gwt.json.JSON'/>
    dans le xxx.gwt.xml, où xxx est le nom du projet.

  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : septembre 2004
    Messages : 1 676
    Points : 4 194
    Points
    4 194
    Par défaut
    Tu parles d'un hébergement qui ne supporte pas Tomcat (et donc Java à priori). Cela n'est pas problématique pour la partie cliente de GWT (qui transforme ton code en Javascript). En revanche, cela le serait par exemple si tu voulais utiliser GWT RPC (qui nécessite que la partie serveur soit écrite en Java).
    Bien entendu, cette partie serveur n'a pas besoin d'être écrite en Java (c'est pour cela que PHP peut être utilisé pour la partie serveur. Je parle de PHP car c'est souvent lui qui est permis par de nombreux sites d'hébergements).
    Dans ce dernier cas, comment faire communiquer le code client (js) avec le code serveur (php) puisque tu ne peux pas utiliser GWT RPC ?
    Via XML ou JSON : deux format d'échanges de données.
    JSON a l'avantage d'être moins verbeux. Il existe je crois des librairies php qui transforme tes objets php en json. Il ne reste plus qu'à les retransformer en objets js (java dans le code gwt) via la librairie json de gwt.


    Pour ton erreur, cela devient évident après coup mais c'est vrai qu'on cherche...
    Ce type d'erreur pouvant venir de pleins d'endroits, je me suis fait une check list :

    - Vérifier que la librairie est dans le classpath
    - Vérifier que l'import du module est bien fait dans le module qui l'utilise
    - Vérifier que la librairie (le fichier jar) contient les sources (.java) qui seront compilés en javascript.
    - Vérifier que la librairie (le fichier jar) contient un fichier INDEX.LIST qui décrit l'arborescence des packages (on dirait que GWT en a besoin / peut être généréer automatiquement avec la tache ant jar par exemple)
    - Vérifier que les sources java à traduire en js sont bien :
    soit dans le dossier client (par défaut) qui se trouve au niveau du module (fichier .gwt.xml)
    soit dans d'autres dossiers sources (utiliser alors la balise <source path=" chemin relatif par rapport au fichier .gwt.xml" />)

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Merci pour tes précisions, c'est un peu plus clair maintenant

  6. #6
    Futur Membre du Club
    Inscrit en
    septembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonjour à tous
    J'au suivi le même tuto que Groxx(ce site http://angel.hurtado.googlepages.com/tutorialgwt2)
    et je n'arrive pas à executer mon application.

    Lorsque j'entre un elelemnt dans la textbox, une erreur java est générée.
    Le problème viendrait donc de la classe JSONParser.java et de cette ligne(probablement)
    object.@com.juan.client.JSONObject::put(Ljava/lang/String;Lcom/juan/client/JSONValue(key, javaValue);


    J'aimerais savoir si quelqu'un a rencontré ce même problème.
    Je suis preneur pr des pistes éventuelles de solutions.
    Merci

    Voici mon erreur
    java.lang.ClassCastException
    at java.lang.Class.cast(Unknown Source)
    at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:125)
    at com.google.gwt.dev.shell.ie.SwtOleGlue.convertVariantsToObjects(SwtOleGlue.java:57)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod(IDispatchImpl.java:119)
    at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java:155)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:294)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:194)
    at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
    at org.eclipse.swt.internal.ole.win32.COM.VtblCall(Native Method)
    at org.eclipse.swt.internal.ole.win32.IDispatch.Invoke(IDispatch.java:64)
    at org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:493)
    at org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:417)
    at com.google.gwt.dev.shell.ie.ModuleSpaceIE6.doInvokeOnWindow(ModuleSpaceIE6.java:67)
    at com.google.gwt.dev.shell.ie.ModuleSpaceIE6.doInvoke(ModuleSpaceIE6.java:152)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:447)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:228)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.juan.client.JSONParser.buildObject(JSONParser.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod(IDispatchImpl.java:126)
    at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java:155)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:294)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:194)
    at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
    at org.eclipse.swt.internal.ole.win32.COM.VtblCall(Native Method)
    at org.eclipse.swt.internal.ole.win32.IDispatch.Invoke(IDispatch.java:64)
    at org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:493)
    at org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:417)
    at com.google.gwt.dev.shell.ie.ModuleSpaceIE6.doInvokeOnWindow(ModuleSpaceIE6.java:67)
    at com.google.gwt.dev.shell.ie.ModuleSpaceIE6.doInvoke(ModuleSpaceIE6.java:152)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:447)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:228)


    .........................
    at
    com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java:155)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:294)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:194)
    at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
    at com.google.gwt.dev.GWTShell.pumpEventLoop(GWTShell.java:720)
    at com.google.gwt.dev.GWTShell.run(GWTShell.java:593)
    at com.google.gwt.dev.GWTShell.main(GWTShell.java:357)
    Un extrait du parseur JSONParser.java
    private static native JSONObject buildObject(JavaScriptObject jsObject) /*-{

    // Create the JSONObject
    //
    var object = @com.juan.client.JSONParser::createJSONObject()();

    // Enumerate all of the key,value pairs in the object and build the
    // corresponding JSONValue
    //
    for (var key in jsObject) {

    var jsValue = jsObject[key];

    // Create the JSONValue associated with the name
    //
    var javaValue = @com.juan.client.JSONParser::buildValue(Lcom/google/gwt/core/client/JavaScriptObject(Object(jsValue));

    // Add the name of the value and JSONValue representation to the current JSONObject
    object.@com.juan.client.JSONObject::put(Ljava/lang/String;Lcom/juan/client/JSONValue(key, javaValue);
    }

    return object;
    }-*/;

Discussions similaires

  1. Prise en main d'un projet Java EE avec Oracle 10g XE et Glassfish
    Par methodman225 dans le forum Glassfish et Payara
    Réponses: 2
    Dernier message: 09/03/2010, 12h06
  2. Réponses: 0
    Dernier message: 10/12/2009, 10h15
  3. [Kylix] Prise en main de FastReport
    Par kase74 dans le forum EDI
    Réponses: 6
    Dernier message: 26/03/2007, 16h15
  4. Aide pour la prise en main du Protocole MODBUS/JBUS
    Par homeostasie dans le forum MFC
    Réponses: 24
    Dernier message: 20/05/2006, 16h56
  5. logiciel prise en main pc distant
    Par lepierre dans le forum Autres Logiciels
    Réponses: 21
    Dernier message: 08/09/2005, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo