Подтвердить что ты не робот

Переопределение grails.views.default.codec = 'html' config обратно в 'none'

В Grails (< 2.3), если я оставлю grails.views.default.code='none' в grails Config.groovy, это зависит от меня, чтобы HTML кодировал мои выражения явно в файлах GSP: ${myValue?.encodeAsHTML()}.

Если я устанавливаю grails.views.default.codec='html" в Config.groovy, тогда кодировка HTML происходит автоматически для каждого выражения: ${myValue}.

Мой вопрос: если я установил значение по умолчанию на 'html', как мне вернуться к 'none' для одного выражения, когда я не хочу, чтобы поведение HTML-кодировки?

4b9b3361

Ответ 1

Если уровень кодирования по умолчанию установлен на html, используя

grails.views.default.codec = "html"

то для удаления html-кодировки для одного выражения на странице вы можете использовать

${сырец (выражение)}

Ответ 2

Подводя итог различным уровням, на которых может применяться кодек:

Установите Config.groovy grails.views.default.codec='html', чтобы получить экранирование HTML по умолчанию во всех ${expressions} в приложении.

Затем, когда вы хотите по умолчанию вернуть всю страницу назад к none, используйте директиву:

<%@page defaultCodec="none" %>

или

<%@ defaultCodec="none" %>

Чтобы отключить кодировку HTML для одного выражения на странице, которая по умолчанию не соответствует HTML, используйте <%=expression%> нотацию вместо ${...}.

Ответ 3

Попробуйте использовать ${raw (myValue)}, вам не нужно объявлять кодеки страниц и т.д.

Ответ 4

Из GRAILS-1827 похоже, что вы можете переопределить кодек по умолчанию для определенной страницы с помощью

<%@ defaultCodec="HTML" %>

или

<%@page defaultCodec="HTML" %>

в некоторых версиях (см. ссылку).

Ответ 5

У меня может быть решение. Я не уверен, как это принято.

Я могу установить кодек по умолчанию для выражений в HTML, но затем использовать <% = myValue% > нотацию в GSP вместо выражений ${}, чтобы получить неэкранированные значения на странице.

Ответ 6

Напишите свой собственный тег и напишите выражение прямо в выходной поток:

class YourTagLib {

    static namespace = "x"

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

}

Используйте его в своем GSP:

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