Генерация HTML из чистого блока Scala
Как я могу генерировать HTML из моего чистого блока Scala в представлении Play Framework?
Следующий код поместит текст тегов прямо на страницу, и поскольку вместо '<' scala Put '& lt' теги отображаются не как HTML, а как чистый текст!
Является ли использование переменной в качестве последнего оператора правильным способом возврата значения этой переменной в результате выполнения блока?
@block() = @{
var str = "<li>"
str += req.getPage
var += "</li>"
str
}
1 ответ
Шаблоны Scala автоматически экранируют весь динамический контент, чтобы защитить вас от атак XSS. Если вы уверены, что контент, который вы размещаете на странице, являются доверенными (т.е. не введены пользователем), и хотите отключить эту защиту XSS (если вы не знакомы с XSS, то будьте очень осторожны здесь, вы Скорее всего, вы привнесете уязвимость в вашу систему, если вы не на 100% понимаете, что делаете), тогда у вас есть два варианта: либо заключить вызов в block
в Html
когда вы используете это:
@Html(block())
Или оберните возвращаемое значение block
в Html
:
@block() = @{
var str = "<li>"
str += req.getPage
str += "</li>"
Html(str)
}
Вы можете прочитать больше об этом в Play-документах, в разделе "Escapeing" внизу этой страницы:
http://www.playframework.com/documentation/2.2.x/ScalaTemplates