Reemplazando grails.views.default.codec = ‘html’ config de nuevo a ‘none’

En Grails (<2.3), si dejo grails.views.default.code='none' en los griales Config.groovy, me corresponde a HTML codificar mis expresiones explícitamente en los archivos GSP: ${myValue?.encodeAsHTML()} .

Si configuro grails.views.default.codec='html" en Config.groovy, la encoding HTML se aplica automáticamente para cada expresión: ${myValue} .

Mi pregunta: si configuro el valor predeterminado para 'html' , ¿cómo puedo volver a 'none' para una expresión cuando no quiero el comportamiento de encoding HTML?

Si el nivel de encoding predeterminado está configurado en html usando

grails.views.default.codec = “html”

luego, para eliminar la encoding html de una expresión en una página, puede usar

$ {raw (expresión)}

Para resumir los distintos niveles en los que se puede aplicar el códec:

Establezca Config.groovy’s grails.views.default.codec='html' para obtener el escape de HTML de manera predeterminada en todas las ${expressions} en la aplicación.

Luego, cuando quiera volver a establecer una página completa sin valores predeterminados, utilice la directiva:

 < %@page defaultCodec="none" %> 

o

 < %@ defaultCodec="none" %> 

Para deshabilitar la encoding HTML para una expresión en una página que de lo contrario está predeterminada a HTML, utilice la notación < %=expression%> lugar de ${...} .

Intenta usar $ {raw (myValue)}, no necesitas declarar códecs de página, etc.

Desde GRAILS-1827 , parece que puede anular el códec predeterminado para una página específica con

 < %@ defaultCodec="HTML" %> 

o

 < %@page defaultCodec="HTML" %> 

en algunas versiones (ver el problema mencionado).

Puedo tener una solución. Aunque no estoy seguro de qué tan aceptado sea.

Puedo establecer el códec predeterminado para las expresiones en HTML, pero luego uso la notación < % = myValue%> en GSP en lugar de las expresiones $ {} para obtener los valores no escaneados en la página.

Escriba su propia etiqueta y escriba la expresión directamente en la secuencia de salida:

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

Úselo en su GSP: