2009-08-26 6 views
42

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

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 fijo el valor predeterminado a 'html', cómo hacer que vuelva a 'none' por una expresión cuando no quiero que el comportamiento de codificación HTML?

Respuesta

6

Si el nivel de codificación por defecto se establece en hTML usando

grails.views.default.códec = "html"

a continuación para eliminar la codificación HTML para una expresión en una página puede utilizar

$ {cruda (expresión)}

+0

Solo disponible para Grails > = 2.3 ver http://mrhaki.blogspot.fr/2013/11/grails-goodness-generating-raw-output.html. La pregunta se dirige a Grails <2.3. Ver la respuesta de John Flinchbaugh a continuación. – BenC

1

Quizás tenga una solución. Aunque no estoy seguro de qué tan aceptado sea.

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

+0

Usted ha dicho más de esto en tu otra respuesta. Este no agrega nada. – cdeszaq

+0

@cdeszaq Mira las fechas. La respuesta más completa fue más tarde. (Y ambos eran de 2009 (y su comentario fue un año antes que el mío).): | –

+0

@CharlesWood Mi punto es que esta respuesta inferior debe ser eliminada. Mis disculpas por no dejar esto más claro. – cdeszaq

4

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

<%@ defaultCodec="HTML" %> 

o

<%@page defaultCodec="HTML" %> 

en algunas versiones (véase el número de referencia).

+0

Esto se ve bien para la anulación por página. –

62

Para resumir los diversos niveles en los que el códec se puede aplicar: grails.views.default.codec='html' para obtener HTML

Conjunto de Config.groovy escapar de forma predeterminada en todos los ${expressions} en la aplicación.

A continuación, cuando se desea por defecto una página entera de nuevo a ninguno, utilice la directiva:

<%@page defaultCodec="none" %> 

o

<%@ defaultCodec="none" %> 

Para desactivar la codificación HTML para una expresión en una página que está de otro modo morosos a HTML, utilice la notación <%=expression%> en lugar de ${...}.

+0

directiva de página de uso es bueno. –

+9

Esta solución ya no funciona. En cambio, necesitarás usar el método 'raw': '$ {raw (expression)}' –

+0

Tendré que volver a visitar esto con los nuevos Grails. Probablemente lo hicieron mucho más fácil. –

1

Escribe tu propia etiqueta y escribe la expresión directa de la secuencia de salida:

class YourTagLib { 

    static namespace = "x" 

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

} 

utilizarlo en su SGP:

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

Trate de usar $ {cruda (myValue)}, que haces no es necesario declarar página de codecs, etc