Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2012, 10h04   #1
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
Par défaut Mettre à jour un dijit.Tree

Bonjour,

Je galère toujours avec mon dijit.Tree et mon JsonRestStore.
Je voudrais ajouter un noeud à mon Tree. J'ai suivi le tuto ici (chapitre "Programmatic Data Changes").
J'ai également suivi ce tuto pour la création de mon arbre.

Je vois bien qu'il est écrit pour dojo 1.6. J'utilise dojo 1.7, est-il compatible ?
Voici donc comment je procèdes pour le mettre à jour :
Code :
1
2
3
4
5
6
7
8
9
10
11
var store = this.planItemsStore;
this.planItemsStore.get(selectedObject.id).then(function(selectedObject){
	alert("PUSH");
	// add a new child
	selectedObject.children.push({
		name: "New child",
		id: "new-child-id"
	});
	// save it with a put(). The tree will automatically update the UI
	store.put(selectedObject);
});
"PUSH" ne s'affiche jamais. Il ne passe pas dans ma méthode.
Pour info, "this.planItemsStore.get(selectedObject.id)" renvoi un "[Trial] dojo.Deferred {}" d'après firebug...
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 10h48   #2
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
En fait je commences à comprendre (oui il me faut du temps...).
Quand j'appelle "this.planItemsStore.get(selectedObject.id)", dojo envoi la requête "GET {target}{query}". La requête échouait donc le script s'arrêtait là. C'est pourquoi "PUSH" ne s'affiche jamais.

J'ai modifié le code en conséquence :
Code :
this.planItemsStore.get("ajax-get-items?systemId=" + nodeId).then(function(selectedObject){...}
Ok maintenant la requête GET est correcte et "PUSH" s'affiche.

Par contre je viens de comprendre que lorsque que je fais "store.put(selectedObject)", dojo émet une requête "PUT {target}{id}".

Mon choix de Store n'est peut être pas judicieux dans ce cas. Certes les données renvoyées par le serveur sont au format JSON, mais ce n'est pas du REST.
Voici les requêtes utilisées pour obtenir/mettre à jour mes items :
  • [GET] {target}/ajax-get-items?nodeId={id}
  • [GET] {target}/ajax-new-requirement?nodeId={id}
  • [GET] {target}/ajax-remove-requirement?nodeId={id}
  • ...
Quelle est le store le plus adapté à mes besoins ? Ou bien comment adapter JSonRestStore à mes besoins ?
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 14h37   #3
Expert Confirmé
 
Avatar de emmanuel.remy
 
Emmanuel REMY
Inscription : novembre 2005
Messages : 2 844
Détails du profil
Informations personnelles :
Nom : Emmanuel REMY
Âge : 43

Informations forums :
Inscription : novembre 2005
Messages : 2 844
Points : 3 589
Points : 3 589
Salut,

Pourquoi tu ne traites pas tes requêtes en PUT sur le server ? Tu ne peux traiter que du GET et du POST ?

ERE
__________________
Quand une tête pense seule, elle devient folle.
emmanuel.remy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 14h55   #4
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
Bonjour Emmanuel,

Une petite remarque au passage, j'adore ta signature, je suis en plein dedans. Heureusement que ce forum existe.

J'ai 2 solutions :
  1. Soit je modifie mon serveur pour prendre en compte les requêtes PUT, DELETE...
  2. Soit j'utilise un autre type de store
Le problème avec la 1ère, c'est que ça demande beaucoup de travail et que je devrais re-développez une bonne partie du serveur ET de l'ihm.

C'est pour cela que je préfèrerai la 2e solution. Je suis en train de voir pour connecter mon dijit.Tree à un dojo.store.Memory.
Je ferai alors mes requêtes traditionnellement puis mettrai à jour le store. Théoriquement le Tree devrait se rafraichir automatiquement non ?
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 15h33   #5
Expert Confirmé
 
Avatar de emmanuel.remy
 
Emmanuel REMY
Inscription : novembre 2005
Messages : 2 844
Détails du profil
Informations personnelles :
Nom : Emmanuel REMY
Âge : 43

Informations forums :
Inscription : novembre 2005
Messages : 2 844
Points : 3 589
Points : 3 589
J'aurais tendance à dire que REST c'est REST donc c'est logique de ne pas pouvoir changer le mode de fonctionnement avec les PUT et DELETE notamment.

LA question, c'est plutôt pourquoi cela pose problème côté server ? Qu'il faille légèrement adapté, pourquoi pas mais normalement c'est sans souci. Qu'utilises tu côté server ?

Ensuite, pas de souci pour utiliser dojo.store.Memory, sauf que tu vas devoir gérer toi même tes appels Ajax, ce qui n'est pas top, mais surtout c'est refaire le job que fait JsonRest...

ERE
__________________
Quand une tête pense seule, elle devient folle.
emmanuel.remy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 15h52   #6
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
Ça devient une habitude : j'ai finalement suivi ton conseil, et je me mets au REST...

Pour le moment j'ai juste mis en place la récupération des items. Maintenant il faut que je m'occupe de la création et de la suppression...

Juste une petite remarque, lorsque j'utilise le dojo.tree.TreeStoreModel, mon arborescence ne s'affiche pas. Je suis donc obligé de créer les méthodes nécessaires dans mon store et d'utiliser mon store comme model...
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 15h53   #7
Expert Confirmé
 
Avatar de emmanuel.remy
 
Emmanuel REMY
Inscription : novembre 2005
Messages : 2 844
Détails du profil
Informations personnelles :
Nom : Emmanuel REMY
Âge : 43

Informations forums :
Inscription : novembre 2005
Messages : 2 844
Points : 3 589
Points : 3 589
En quel langage tu code ?

ERE
__________________
Quand une tête pense seule, elle devient folle.
emmanuel.remy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 15h55   #8
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
Le serveur est une application web développée en Java.
Je me base sur le framework Spring qui - heureusement - propose des interfaces et des annotations pour envoyer/recevoir des requêtes REST facilement... Ouf
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 16h56   #9
Expert Confirmé
 
Avatar de emmanuel.remy
 
Emmanuel REMY
Inscription : novembre 2005
Messages : 2 844
Détails du profil
Informations personnelles :
Nom : Emmanuel REMY
Âge : 43

Informations forums :
Inscription : novembre 2005
Messages : 2 844
Points : 3 589
Points : 3 589
D'après ta description je juppose que tu fais du Spring Web ? Si c'est le cas c'est du tout cuit. Tu n'as qu'à gérer @RequestMapping et c'est bon

ERE
__________________
Quand une tête pense seule, elle devient folle.
emmanuel.remy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 18h33   #10
Membre régulier
 
Homme Lionel ANDRE
Inscription : avril 2005
Messages : 294
Détails du profil
Informations personnelles :
Nom : Homme Lionel ANDRE
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2005
Messages : 294
Points : 77
Points : 77
C'est vrai que ça facilite grandement les choses ;-)
andlio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h50.


 
 
 
 
Partenaires

Hébergement Web