2009-08-26 4 views
42

Dans Grails (< 2.3), si je laisse grails.views.default.code='none' dans les grails Config.groovy, c'est à moi de coder HTML explicitement mes expressions les fichiers GSP: ${myValue?.encodeAsHTML()}.Overriding grails.views.default.codec = 'html' config retour à 'none'

Si je définis grails.views.default.codec='html" dans Config.groovy, le codage HTML est automatiquement exécuté pour chaque expression: ${myValue}.

Ma question: Si je mets la valeur par défaut à 'html', comment puis-je revenir à 'none' pour une expression quand je ne veux pas le comportement de codage HTML?

Répondre

6

Si le niveau d'encodage par défaut est défini sur hTML en utilisant

grails.views.default.codec = "html"

ensuite pour enlever le codage html pour une expression dans une page que vous pouvez utiliser

$ {brut (expression)}

+0

Uniquement disponible pour Grails > = 2.3 voir http://mrhaki.blogspot.fr/2013/11/grails-goodness-generating-raw-output.html. La question vise les Grails <2.3. Voir John Flinchbaugh réponse ci-dessous. – BenC

1

Je peux avoir une solution. Cependant, je ne suis pas sûr de son acceptation.

Je peux définir le codec par défaut des expressions au format HTML, puis utiliser la notation <% = myValue%> dans GSP au lieu des expressions $ {} pour obtenir les valeurs non échappées sur la page.

+0

Vous avez dit plus ceci dans votre autre réponse. Celui-ci n'ajoute rien. – cdeszaq

+0

@cdeszaq Regardez les dates. La réponse plus complète était plus tard. (Et ils étaient tous deux de 2009 (et votre commentaire était un an avant le mien).): | –

+0

@CharlesWood Mon point est que cette réponse inférieure devrait être supprimée. Mes excuses pour ne pas avoir rendu cela plus clair. – cdeszaq

4

De GRAILS-1827, il semble que vous pouvez remplacer le codec par défaut pour une page spécifique avec

<%@ defaultCodec="HTML" %> 

ou

<%@page defaultCodec="HTML" %> 

dans certaines versions (voir le numéro de référence).

+0

Cela semble bon pour le remplacement par page. –

62

Pour résumer les différents niveaux auxquels le codec peut être appliqué:

Set grails.views.default.codec='html' de Config.groovy pour obtenir le code HTML échapper par défaut sur tous ${expressions} dans l'application.

Puis, quand vous voulez par défaut une page entière en arrière sans pareil, utilisez la directive:

<%@page defaultCodec="none" %> 

ou

<%@ defaultCodec="none" %> 

Pour désactiver le codage HTML pour une expression dans une page qui est par ailleurs en défaut au format HTML, utilisez la notation <%=expression%> au lieu de ${...}.

+0

l'utilisation de la page directive est bonne. –

+9

Cette solution ne fonctionne plus. Au lieu de cela, vous devrez utiliser la méthode 'raw': '$ {raw (expression)}' –

+0

Je vais devoir revoir cela avec de nouveaux Grails. Ils l'ont probablement rendu beaucoup plus facile. –

1

Écrivez votre propre étiquette et écrire l'expression directe au flux de sortie:

class YourTagLib { 

    static namespace = "x" 

    def unescaped = { attrs, body -> 
     out << attrs.value 
    } 

} 

utiliser dans votre GSP:

<x:unescaped value="${yourexpression}"/> 
7

Essayez d'utiliser $ {brut (maValeur)}, vous ne pas besoin de déclarer les codecs page etc