grails encoding groovy expression gsp

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



encoding groovy (6)

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).

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 codificación 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 codificación HTML?


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:

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


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


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 codificación HTML para una expresión en una página que de lo contrario está predeterminada a HTML, utilice la notación <%=expression%> lugar de ${...} .


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.


Si el nivel de codificación predeterminado está configurado en html usando

grails.views.default.codec = "html"

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

$ {raw (expresión)}