Pergunta

Em Grails (<2,3), se eu sair grails.views.default.code='none' Na Config.groovy do Grails, cabe a mim o HTML codifica minhas expressões explicitamente nos arquivos GSP: ${myValue?.encodeAsHTML()}.

Se eu definir grails.views.default.codec='html" No config.groovy, a codificação HTML acontece automaticamente para todas as expressões: ${myValue}.

Minha pergunta: se eu definir o padrão para 'html', como faço para voltar para 'none' Para uma expressão quando não quero o comportamento de codificação HTML?

Foi útil?

Solução

Se o nível de codificação padrão estiver definido como HTML usando

Grails.Views.Default.Codec = "HTML"

Então, para remover a codificação HTML para uma expressão em uma página que você pode usar

$ {RAW (Expression)}

Outras dicas

Para resumir os vários níveis em que o codec pode ser aplicado:

Definir config.groovy's grails.views.default.codec='html' Para fazer HTML escapar por padrão em todos ${expressions} na aplicação.

Então, quando você deseja padrão uma página inteira de volta para ninguém, use a diretiva:

<%@page defaultCodec="none" %>

ou

<%@ defaultCodec="none" %>

Para desativar a codificação HTML para uma expressão em uma página que está de outra forma em HTML, use <%=expression%> notação em vez de ${...}.

Tente usar $ {RAW (myValue)}, você não precisa declarar codecs de página etc.

A partir de Grails-1827, parece que você pode substituir o codec padrão para uma página específica com

<%@ defaultCodec="HTML" %>

ou

<%@page defaultCodec="HTML" %>

em algumas versões (consulte a edição referenciada).

Eu posso ter uma solução. Não tenho certeza de como é aceito, no entanto.

Eu posso definir o codec padrão para expressões como HTML, mas depois usar <%= myValue%> notação no GSP em vez de $ {} expressões para obter os valores não especiais na página.

Escreva sua própria tag e escreva a expressão diretamente para o fluxo de saída:

class YourTagLib {

    static namespace = "x"

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

}

Use -o no seu GSP:

<x:unescaped value="${yourexpression}"/>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top