binding objet JAVA -> XML pour Datasource GWT [Java] - Java - Programmation
Marsh Posté le 26-10-2009 à 16:01:54
xstream, mais ca ne fonctionnera que coté serveur
Marsh Posté le 26-10-2009 à 16:10:01
nerisson a écrit : xstream, mais ca ne fonctionnera que coté serveur |
le fait que ça tourne coté serveur ne pose pas de souci... au contraire même :
La manip va nécessiter un appel coté serveur pour récupérer l'objet java complet, donc tant qu'à faire autant que la transco java->xml soit réalisée coté serveur.
merci en tout cas, je creuse de ce coté
Marsh Posté le 26-10-2009 à 20:22:22
XStream est pas mal, j'ai aussi utilisé JAXB 2 (inclus dans J2EE) et ça fonctionne très bien aussi.
Marsh Posté le 27-10-2009 à 09:20:57
OK merci, j'ai commencé à regarder du coté de XStream :
C'est pas mal effectivement, et ça permet de ressortir assez facilement l'arboresence d'un objet java sous forme de XML.
Là par contre, je me heurte deux limitations de GWT :
1) le XML en entrée des grilles n'est pas un XML "standard" (avec n niveaux) imbriqués, mais un XML "à plat" avec pour chaque objet une foreign key vers son objet parent.
Code :
|
2) GWT s'attend à ce que les champs soient définis explicitement pour pouvoir en effectuer le rendu... ce qui n'est pas mon cas, puisque le XML généré par XStream reprend comme balise les noms des attributs...
Bref, je dois trouver le moyen de convertir le XML de XStream en un XML "GWT compliant"... et c'est pas gagné
Marsh Posté le 27-10-2009 à 22:07:00
Je n'ai pas tout compris... de 1, tu veux que le XML soit indenté c'est ça? et de 2, qu'entends-tu par "champ défini explicitement"?
Marsh Posté le 30-04-2010 à 12:15:09
cbeyls a écrit : Je n'ai pas tout compris... de 1, tu veux que le XML soit indenté c'est ça? et de 2, qu'entends-tu par "champ défini explicitement"? |
Je réponds un peu tard, mais bon :
Je veux un XML, mais dont chacune des entrée référence explicitement son "parent".
Concrêtement en reprenant l'exemple précédent, chaque entrée "employee" dispose d'un identifiant unique "employeeId", et référence son parent par "reportsTo".
Cette mise en forme est nécessaire pour que le composant graphique de smartGWT puisse effectuer un rendu sous forme d'arbre.
Le tout doit être réalisé de manière dynamique, car je ne connais pas "à priori" l'arborescence d'objets que je sérialise.
Je m'en suis sorti par le système suivant :
1) je passe par Xstream pour serialiser mon objet java.
2) je récupère le flux XML sérialisé, que j'interprète via un parser XML
3) je passe de manière récursive à travers les nœuds du XML en reconstruisant une collection d'objets "nœud", où j'indique pour chaque nœud :
- un identifiant unique
- l'identifiant de son parent
4) je rattache cette collection à mon composant smartGWT
dans le détail, voici mon code de réinterprétation
Code :
|
sachant que mon objet "nœud" est la classe TreeObject :
Code :
|
et enfin, voici comment j'effectue le rendu via smartGWT
Code :
|
De cette manière, il est possible de représenter sous forme d'arbre n'importe quel objet JAVA (à condition qu'il ne contienne pas de récursivité) en le convertissant en XML via xstream.toXml(object), et en réinterprétant le flux XML
Marsh Posté le 26-10-2009 à 15:47:43
Bonjour,
j'ai besoin d'un petit coup de main sur un problème java :
En une phrase : Je cherche à présenter à l'utilisateur la structure d'un objet java, c'est à dire chacun de ses champs leurs valeurs (un toString() fera l'affaire ), et la possiblité de parcourir les types complexes (listes, maps, etc.).
en gros, la vue "Variables" d'Eclipse
J'ai des contraintes techniques :
J'entame tout juste ma réflexion... et à première vue, je serai tenté d'aborder le problème sous cet angle :
1) GWT aime bien les datasources en XML... donc je verrai bien GWT manipuler un XML décrivant l'objet que je dois afficher (sous forme : clé=nom de l'attribut, valeur=toString() de l'attribut)
2) Je dois alors trouver une lib java me permettant de générer un XML à la volée à partir d'un objet java passé en paramètre, par introspection des attributs (ou éventuellement utilisation des getters).
Des idéees ? Des libs à conseiller ?
Merci d'avance
Message édité par cartemere le 26-10-2009 à 17:23:05