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 :

Génération d'un fichier XML


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 22
    Par défaut Génération d'un fichier XML
    Bonjour,

    Je travaille sur un module me permettant de réorganiser le menu de mon site internet, contenu dans un fichier XML.
    J'importe donc mon menu depuis ce fichier XML vers un Tree grâce à XMLTreeLoader, puis en utilisant le Drag & Drop je le réorganise.

    Ma question : Comment modifier le fichier XML en conséquence après avoir effectué des modifications?

    Merci d'avance pour votre aide !

  2. #2
    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
    Par défaut
    Il faut que tu passes par le serveur (que ta partie serveur soit en java ou en php), que tu envoies les modifications effectués dans ton arbre et/ou l'arbre tout entier (en json/xml/rpc) à une servlet java ou a une page php qui enregistre les modifications dans le xml.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 22
    Par défaut
    Si j'ai bien compris :
    - je créé une classe dans mon package "server" qui me permettra (en Java) de modifier le .XML.
    - cette classe recevrai un objet extrait de ma Tree depuis une classe de ma partie "client" ?

    La communication entre server et client se fait donc de façon transparente?

    Concernant la solution PHP pour modifier le fichier, comment je peux transmettre des données entre mon code Java côté client et la page de modification PHP ?

    (Je suis vraiment débutant en GWT)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 22
    Par défaut
    Après quelques recherches sur le forum et grâce à la documentation de GWT, je créé un service RPC GWT tel qu'expliqué dans cette documentation.
    Cependant, j'ai toujours quelques points qui me posent problème : sous quelle forme transmettre ma Tree pour l'écrire dans le XML? Existe-t-il un moyen d'extraire directement du code XML de ma Tree?

    Par ailleurs, j'avais cru comprendre que le principe de GWT est d'écrire du code Java qui sera traduit à la compilation en Javascript. Dans ce cas, que deviendrai ma partie Java côté server? Y a-t-il une procédure particulière par rapport au déploiement?

  5. #5
    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
    Par défaut
    Citation Envoyé par itazone Voir le message
    Si j'ai bien compris :
    - je créé une classe dans mon package "server" qui me permettra (en Java) de modifier le .XML.
    - cette classe recevrai un objet extrait de ma Tree depuis une classe de ma partie "client" ?
    Oui, tu as globalement compris.
    La communication entre server et client se fait donc de façon transparente?
    La communication entre client et serveur se fait pas échanges de données.

    Lorsque le serveur envoit des données au client, c'est par une réponse http qui contient au choix :
    - du json (faisable avec toute techno serveur)
    - de l'xml (faisable avec toute techno serveur)
    - du texte représentant les objets gwt sérialisés (mode RPC nécessitant à priori un serveur java (j'imagine qu'on pourrait écrire un serialiser GWT en PHP mais c'est autrement plus compliqué)).

    Lorsque le client envoit des données au serveur, c'est par une requête http qui contient au choix :
    - des paramètres d'url (GET) (à destination de toute techno serveur)
    - des paramètres intégré au body de la requête (POST) avec ou non du flux binaire (upload de fichier par exemple)
    - du texte intégré au body de la requête (POST) représentant les objets gwt sérialisés (mode RPC à destination d'un serveur java).

    Concernant la solution PHP pour modifier le fichier, comment je peux transmettre des données entre mon code Java côté client et la page de modification PHP ?
    Comme je te l'ai montré ci dessus, l'envoi entre le client (javascript) et le serveur (php) passe principalement par un ensemble de paramètres (cle/valeur) passés dans l'url (GET) ou dans le body (POST) et pour un arbre, ce n'est pas forcément le modèle d'échange le plus adapté. Le mode RPC te permettrait d'envoyer une structure de données plus riche mais nécessite un serveur Java.

    Cependant, j'ai toujours quelques points qui me posent problème : sous quelle forme transmettre ma Tree pour l'écrire dans le XML?
    C'est à toi de le définir suivant que tu envois une requête à chaque modif d'un noeud (moins de données à envoyer mais plus de requête) ou au final (envoi en une seule requête d'une structure de données arborescente)
    Existe-t-il un moyen d'extraire directement du code XML de ma Tree?
    A voir ce que fourni l'api du Tree. S'il y a ou non un model de donnée qui porrait transiter entre client/serveur ... ou s'il te faut le fabriquer "à la main"

    Par ailleurs, j'avais cru comprendre que le principe de GWT est d'écrire du code Java qui sera traduit à la compilation en Javascript.
    C'est juste mais GWT ne transforme en javascript que le code Java de la partie cliente.
    Le code Java côté serveur reste du code Java et est indépendant du code client (c'est pour cela qu'on peut utiliser php ou autre côté serveur si on ne fait pas de RPC).
    Utiliser Le mode RPC de gwt permet d'échanger des objets (il faut qu'ils soient compilables en js, ils appartiennent en quelque sorte à la partie cliente) mais ce mode nécessite un serveur Java.

    Dans ce cas, que deviendrai ma partie Java côté server? Y a-t-il une procédure particulière par rapport au déploiement?
    La partie server écrite en Java (qu'on utilise ou non le RPC) nécessite un serveur Java pour le déploiement. En hosted mode, c'est le tomcat/jetty intégré à gwt mais en production, il te faut un serveur JAVA. Ce qui peut être problématique pour l'hébergement avant l'arrivée de GAE.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 22
    Par défaut
    Merci beaucoup pour tes explications qui m'ont vraiment beaucoup appris !
    Après concertation avec mes collaborateurs sur ce projet, la modification du XML se fera à l'aide de PHP côté server.
    Dans cette optique, la transmission se ferait au format JSON.

    Cependant, au vue de ce tu que me disais :
    La partie server écrite en Java (qu'on utilise ou non le RPC) nécessite un serveur Java pour le déploiement. En hosted mode, c'est le tomcat/jetty intégré à gwt mais en production, il te faut un serveur JAVA. Ce qui peut être problématique pour l'hébergement avant l'arrivée de GAE.
    Je me demande donc s'il est possible de générer uniquement le code javascript de la partie cliente, d'envoyer les données en JSON vers le PHP du server, et ainsi de ne pas avoir de Java côté server.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 22
    Par défaut
    J'ai donc essayé de créer un JSONObject à partir de ma Tree comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Tree backupTree = treePanel.getTree();
    JSONObject object = new JSONObject(backupTree.getJsObj());
    RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST,"http://.../index.php");
    requestBuilder.setRequestData(object.toString());
    try {
       requestBuilder.send();
    } catch (RequestException e) {
       e.printStackTrace();
    }
    La procédure (création d'un objet JSON puis toString() avant l'envoi) est-elle correcte?

    J'ai le warning suivant qui apparaît après avoir "envoyé" (elles n'arrivent jamais) les données :
    Malformed JSNI reference 'valueOf'; expect subsequent failures

  8. #8
    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
    Par défaut
    Citation Envoyé par itazone Voir le message
    Je me demande donc s'il est possible de générer uniquement le code javascript de la partie cliente, d'envoyer les données en JSON vers le PHP du server, et ainsi de ne pas avoir de Java côté server.
    Le serveur Java est requis si tu as une partie server. Mais comme elle est optionnelle, si tu n'en a pas, pas besoin de serveur java. Tu compiles juste la partie cliente et tu as au final que du javascript/html/css.

    Le code de l'exemple que tu fournis me paraît plutôt pas mal.
    L'adresse php que tu indiques "http://.../index.php" doit être une page qui va traiter le json qu'elle reçoit.

    Quand a ton warning, on dirait que c'est à la génération du json qu'il y a un souci (jsni, c'est l'appel à une méthode native en javascript)
    Pour séparer les problèmes, je testerai déjà l'envoi de json : requestBuilder.setRequestData("Avec une petite chaine json bien formatée ici");
    Pour le problème de génération du json, il faudrait débugger. Comme ça, c'est dur à dire.

Discussions similaires

  1. [XML] Surcharge de la mémoire à la génération d'un fichier XML
    Par phy4me dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 21/12/2008, 12h15
  2. [JDOM] Génération d'un fichier XML avec JDOM
    Par demcoul dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 27/11/2008, 13h50
  3. génération d'un fichier XML
    Par k_boy dans le forum XQUERY/SGBD
    Réponses: 9
    Dernier message: 13/06/2008, 15h25
  4. Problème génération d'un fichier XML
    Par sw_spring dans le forum Jasper
    Réponses: 1
    Dernier message: 19/03/2008, 09h32
  5. génération automatique de fichier xml vide
    Par ecdxml dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 03/07/2006, 10h57

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