如何在play框架视图中从纯scala块生成html?
以下代码会将代码的文本直接放在页面中,而不是'<' scala puts'& lt'标签不会呈现为html而是纯文本!
将变量作为最后一个语句作为块执行的结果返回该变量值的正确方法是什么?
@block() = @{
var str = "<li>"
str += req.getPage
var += "</li>"
str
}
答案 0 :(得分:1)
Scala模板会自动转义所有动态内容,以保护您免受XSS攻击。如果你确定你在页面中放置的内容是可信的(即,不是由用户输入),并且想要禁用这个XSS保护(如果你不熟悉XSS,那么在这里要非常谨慎,你是如果你没有100%理解你在做什么,可能会在你的系统中引入一个安全漏洞,那么你有两个选择,当你使用block
时将其调用到Html
:< / p>
@Html(block())
或者,将block
的返回值包装在Html
:
@block() = @{
var str = "<li>"
str += req.getPage
str += "</li>"
Html(str)
}
您可以在Play文档的本页底部标题为“Escaping”的部分中详细了解此内容:
http://www.playframework.com/documentation/2.2.x/ScalaTemplates