Remplacer grails.views.default.codec = ‘html’ config à ‘none’

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

Si je grails.views.default.codec='html" dans Config.groovy, le codage HTML se produit automatiquement pour chaque expression: ${myValue} .

Ma question: Si je mets la valeur par défaut sur 'html' , comment puis-je revenir à 'none' pour une expression lorsque je ne souhaite pas le comportement de l’encodage HTML?

Si le niveau d’encodage par défaut est défini sur HTML en utilisant

grails.views.default.codec = “html”

puis pour supprimer le codage HTML pour une expression dans une page, vous pouvez utiliser

$ {raw (expression)}

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

Définissez grails.views.default.codec grails.views.default.codec='html' sur grails.views.default.codec='html' pour que le code HTML s’échappe par défaut sur toutes les ${expressions} de l’application.

Ensuite, lorsque vous souhaitez restaurer une page entière par défaut, utilisez la directive:

 < %@page defaultCodec="none" %> 

ou

 < %@ defaultCodec="none" %> 

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

Essayez d’utiliser $ {raw (myValue)}, vous n’avez pas besoin de déclarer les codecs de page, etc.

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 problème référencé).

J’ai peut-être une solution. Je ne sais pas comment il est accepté, cependant.

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

Ecrivez votre propre tag et écrivez l’expression directement dans le stream de sortie:

 class YourTagLib { static namespace = "x" def unescaped = { attrs, body -> out < < attrs.value } } 

Utilisez-le dans votre GSP: