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