Le Fri, 13 Jan 2012 19:14:55 +0100, Benjamin POUSSIN <poussin@codelutin.com> a écrit :
On Fri, 13 Jan 2012 18:39:32 +0100 Benjamin POUSSIN <poussin@codelutin.com> wrote:
Salut,
Voila une config que j'utilise pour ca. En gros seules les proprietes de l'action decrite dans le type wikitty-json son serialise en json. Ici, je ne joue que sur l'include, mais on peut aussi utilier exclude, voir la doc pour plus de detail: http://struts.apache.org/2.1.8/docs/json-plugin.html
Tony me glisse dans l'oreille qu'il est trop dur pour topia d'ecrire les includes/excludes.
J'ai essayé de mettre en place des regex pour exclure les infos non désirées dans la serialization JSON. Cela me semblait etre plus cohérent : utiliser les outils proposés et pas contourner le probleme (meme si on m'avait prevenu que d'autres se sont cassé les dents en tentant de jouer les regex , ouep, chui tetu, et j'aime comprendre ce qui va pas...) J'ai réussi à faire fonctionner avec deux objets simples A&B et un objet C qui contenait B, par contre, des lors ou j'ai rajouté un objet D contenant A, soit la serialisation de C plantait, soit c'était celle de A, en fonction de comment je jouais sur la regex. En soit meme, je ne comprends pas comment cela ne peut pas fonctionner sur les deux, car le schema et le meme : C contient un seul B et D contient un seul A. donc la regex qui fonctionne sur l'un devrait correspondre à l'autre aussi. (donc je comprends toujours pas ce qui va pas ):
L'idée serait donc de créer un helper json dans topia. Ca eviera a chaque projet de devoir creer des dto pour ce seul besoin.
Je suis pas convaincu par l'approche : on a un probleme, pour le moment specifique à notre utilisation du plugin JSON de struts, mais des lors ou il faudra serializer dans un autre langage (xml, yaml, etc ...), devra-t-on faire la meme chose ? Ma vision du probleme, c'est qu'on remonte la terre et le monde avec les entités. Loin de moi l'envie de relancer un débat qui semble avoir deja eu lieu à plusieurs reprises. L'approche que j'ai sur cette problematique, c'est de créer des DTOs avec nos entités. Je vois l'utilisation d'un DTO comme une vue sur une entité (ou plusieurs entités), et c'est exactement ce que l'on désire ici : ne voir que certaines propriétés, celles propres à l'entité, que l'on ecrit dans le model (+ potentiellement l'id, qui est pas explicitement indiqué dans le model). Pourquoi ne pas voir alors dans le EntityDTOTransformer un ajout de la propriété "id" qui correspondrait au topiaId de l'entité, ainsi qu'une operation permettant la creation du DTO depuis l'entité pour en faire la copie directement et simplement ? Ou alors j'ai pas compris l'utilité de ce transformer par rapport au "DTOTransformer". -- Yannick