0

如何在播放框架视图中从我的纯 scala 块生成 html?

下面的代码将标签的文本直接放在页面中,因为不是'<' scala puts '<'标签不是呈现为html,而是呈现为纯文本!

将变量作为最后一条语句是否是作为块执行结果返回该变量值的正确方法?

@block() = @{
  var str = "<li>"
  str += req.getPage
  var += "</li>"
  str
}
4

1 回答 1

1

Scala 模板会自动为您转义所有动态内容,以保护您免受 XSS 攻击。如果您确定您在页面中放置的内容是可信的(即不是用户输入的),并且想要禁用此 XSS 保护(如果您不熟悉 XSS,那么在这里要非常小心,您是如果你不是 100% 理解你在做什么,可能会在你的系统中引入一个安全漏洞),那么你有两个选择,或者blockHtml你使用它时包装调用:

@Html(block())

block或者,包装in的返回值Html

@block() = @{
  var str = "<li>"
  str += req.getPage
  str += "</li>"
  Html(str)
}

您可以在本页底部标题为“转义”的部分的 Play 文档中阅读有关此内容的更多信息:

http://www.playframework.com/documentation/2.2.x/ScalaTemplates

于 2013-11-29T00:24:22.630 回答