12
votes

Objet de commande Grails: Comment charger la demande.json.

question forte>: est-il un moyen de faire une liaison automatique d'objet de commande avec demande.json Data?

Compte tenu de cet objet de commande simple dans mon contrôleur de Grails: P>

Class org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
Message Tag [validate] is missing required attribute [form]


0 commentaires

3 Réponses :


7
votes

Je ne sais pas s'il y a quelque chose de configuration sage pour faire une liaison automatique de données de paramètre JSON; Une chose que vous pourrez peut-être faire est d'écrire un filtre pour vos actions qui prennent la demande de demande JSON qui rétablit essentiellement la requête.json directement sur la carte des params racine, qui devrait en théorie permettre la liaison automatique des données à avoir lieu.

Quelque chose comme: xxx

Vous pouvez ensuite étendre ce filtre via des conventions de regex / nommer à des actions de contrôleur applicables.


2 commentaires

Cela fonctionnerait. Je vais le marquer comme la réponse à moins que quiconque ait une autre suggestion. Merci, aquatoad!


Heureux de vous aider. Je vais supprimer le peu qui est réparé par l'annotation @Validable aussi.



1
votes

Si vous n'utilisez pas l'objet de commande comme paramètre sur les actions de contrôleur, les greils ne l'améliorent pas automatiquement avec une méthode de validation. Vous devez annoter la classe avec @Validatible pour dire des greils, il devrait être amélioré.

http://grails.org/doc/latest/Guide/validation. HTML # validationnondomainandCommandObjectClasses


0 commentaires

4
votes

Vous devez utiliser parseQuest = true dans urlmapings.groovy . Par exemple: xxx

alors vous pouvez utiliser parames variable ou lier JSON à un objet de commande dans une méthode Arguments:

index def (MyCommand Command) {...}

Les deux devraient fonctionner. Mais dans certains cas, il perd quelques informations de JSON (liaison aux cartes).


1 commentaires

Juste fyi pour les lecteurs sur Grails 2.3, le parsequest ne fait désormais rien, vous devez gérer JSON manuellement.