2015-10-13 2 views
0

Les convertisseurs de Grails peuvent être configurés pour être imprimés (ou non) par défaut.Comment imprimer de manière sélective de jolies réponses Grails?

J'aime utiliser la méthode de réaction place toute MarkupBuilder, JsonBuilder ou tout autre bibliothèque que je gérer le format de réponse.

respond myObject 

L'utilisateur peut interroger xml, json ou hal.

Comment puis-je permettre à l'utilisateur d'interroger pour une jolie impression (par défaut en supposant est pas) Si l'utilisateur passe un paramètre dans l'URL comme ceci:

/foos?pretty=true 

Comment puis-je forcer le répondre à peu impression?

Obs. J'ai vu this question mais ils résolvent tous le problème de façon statique. Je veux le changer de façon spectaculaire sur demande.

Répondre

0

Puisque vous voulez être en mesure de sélectionner le format basé sur un paramètre de contrôleur, je pense qu'un convertisseur Grails long avec render() sera mieux que d'utiliser respond(). Voici un exemple:

import grails.converters.* 

class SomeController { 
    def foos() { 
     def pretty = params.pretty 
     def prettyType 
     def myObject = /* whatever */ 

     if(pretty == 'xml') prettyType = XML 
     if(pretty == 'json') prettyType = JSON 

     if(prettyType) render myObject.asType(prettyType) 
     else render myObject   
    } 
} 

L'URL serait quelque chose comme: /foos?pretty=xml ou /foos?pretty=json.

+0

Merci emanuel, mais de cette façon je vais devoir menacer tous les cas. Répondre signifie que Grails s'occupera de la négociation de contenu (jusqu'à présent, il devrait être vrai ou faux et le XML ou le JSON dans les en-têtes HTTP). La réponse signifie également que l'utilisateur peut récupérer HAL, ATOM, HTTP ou tout autre format. Et j'ai déjà déclaré les beans de convertisseur dans /grails-app/conf/spring/resources.groovy. Je pense qu'il est nécessaire de gérer cela en utilisant la commande respond. Merci – barata