Кодек Grails View не работает (2.4)
Я пытаюсь вставить строку в мой gsp, которая содержит амперсанд, но мне нужен амперсанд как есть, а не версия html-ized, потому что она внедряется в некоторый javascript. Вот что я пробовал...
- Документы Grails говорят, что значением по умолчанию для grails.views.default.codec является "none". Это неверно. Это "HTML".
- Я могу предположить, что Grails не экранирует строки, используя теги в стиле jsp, то есть:
<%=mySafeHTMLString%>
Нету. - Я могу предположить, что Grails не использовать код по умолчанию на странице с помощью
<%@page defaultCodec="none" %>
Нет снова.
Короче говоря, документы Grails, похоже, неверны с самого начала, а затем, кажется, функциональность нарушена. Есть ли что-то еще, что я могу попробовать здесь?
Я использую Граальс 2.4.
1 ответ
Начиная с версии Grails 2.3, все выражения ${} автоматически выводятся на GSP. Это очень полезно, потому что пользовательский ввод теперь экранируется, и любой HTML или JavaScript во входном значении экранируется и не интерпретируется браузером как HTML или JavaScript. Это сделано для того, чтобы наше приложение Grails было защищено от атак на межсайтовый скриптинг (XSS).
Тем не менее, вы всегда можете использовать raw()
или же encodeAsRaw()
если вам нужно сырое значение. Такие как:
raw(somethingFromModel)
somethingFromModel.encodeAsRaw()
<g:encodeAs codec="None">${somethingFromModel}</g:encodeAs>
Кроме того, вы можете контролировать тип кодировки по умолчанию (как всегда) для GSP из Config.groovy
grails.views.default.codec = "none" // this will emulate pre-2.3 behavior