2013-06-18 4 views
1

Примечание: в процессе модернизации от Grails 1.3.6 до 2.2.2.Остановить Grails от HTML-кодирования сообщений?

Если у меня есть тег, такие как:

<g:message code="some.code.here" args="${[someHTML]}" /> 

Он кодирует значение как HTML, даже если следующее устанавливается в Config.groovy:

grails.views.default.codec = "none" 

Это не проблема Grails 1.3.6. Он делает это для всех тегов на протяжении всего проекта. Это необходимо передать в ссылках таким образом, поскольку мы передаем ссылки на основе языка.

Любая идея, почему это не работает, даже несмотря на то, что она работала до обновления или обходной путь?

Если HTML находится в файле .properties, это отображает штраф. Если переменная просто встроена в страницу, она работает нормально. Это акт передачи его в качестве аргумента для g: сообщения, которое вызывает его ошибку. Я попытался использовать способ <% = someHTML%>, чтобы передать его, но, похоже, это не так, говоря, что мне не хватает цитаты.

ответ

2

g: сообщение было изменено из-за уязвимости XSS (GRAILS-7170). См. http://jira.grails.org/browse/GRAILS-10099 для обходного пути для продолжения использования аргументов HTML в определенных случаях (например, ваш прецедент).

+0

Спасибо, работает отлично. – user1661781

+0

Примечание стороны: с 2.3, вы можете использовать encodeAs = «None» без обходного пути. –

+0

-1 потому что ссылка, содержащая решение, теперь сломана. Ответ должен включать наиболее значимую часть решения по этой причине –

Смежные вопросы