2008-10-26 6 views
3

Mon application est divisée logiquement en serveur, qui contient mes objets et contrôleurs de domaine Grails; et client, où j'ai mes classes Ext GWT qui construisent toutes les pages d'interface utilisateur.Comment partager des objets de domaine sur Grails avec Ext GWT (GXT)?

Pour les demandes d'interface utilisateur, j'utilise un appel AJAX à une méthode de contrôleur qui renvoie, par exemple, une liste d'objets de domaine en tant que structure JSON. Suivant le principe DRY, je ne voudrais pas "sérialiser" les données du domaine à une chaîne JSON sur le serveur, puis le dé-sérialiser sur le client vers une autre structure - Je voudrais profiter du domaine objet que j'ai déjà, cela je ne dois pas changer plusieurs endroits quand j'ajoute, change ou enlève un nouveau champ.

La question est: est-ce une bonne façon de procéder? Si oui, quelle serait la meilleure façon de rendre les objets de domaine .groovy disponibles sur les classes Java Ext GWT "côté client"?

Si non, pourquoi est-ce mauvais et que conseilleriez-vous plutôt?

+0

J'ai voté pour votre question parce que je veux faire la même chose. –

Répondre

1

Il n'y a pas de bon moyen - vous avez besoin d'un objet java qui est sérialisable GWT. La seule vraie solution que je puisse voir est d'écrire un plugin (ou d'ajouter au plugin GWT) un moyen d'autogénérer l'objet de transfert de données, en utilisant peut-être des annotations dans un objet de domaine grails.

Une méthode similaire est utilisée pour générer automatiquement les interfaces RPCAsync dans le plugin gwt - voir GwtGrailsPlugin.groovy dans le répertoire gwt plugin, ligne 133 ou le début.

Vous pouvez vous connecter à cela (ou simplement modifier ce fichier directement, probablement plus facilement) et insérer du code pour générer les fichiers de transfert de données. Un avantage supplémentaire pourrait être que vous pourriez granulariser l'objet de transfert de données afin que les données privées (comme les mots de passe!) Ne soient pas transférées.

+0

Merci Chii, des idées géniales. Je vais regarder dedans! – kolrie

+0

Si vous tentez cela, puis-je vous suggérer de poster les modifications pour les autres à voir? ça pourrait être utile. En fait, je pense à faire cela dans un de mes projets - je n'ai tout simplement pas encore réussi à le faire! Quand je le ferai, je l'afficherai quelque part - probablement dans les grails gwt plugin jira. – Chii

0

Vous pouvez également envoyer vos données au client sous la forme json ou xml. Vous pouvez créer une API REST pour votre serveur.

Questions connexes