Substituindo Grails.Views.Default.Codec = 'HTML' Config novamente para 'None'
-
20-09-2019 - |
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?
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}"/>