2013-09-27 60 views
0

如何在play framework视图中从我的纯scala块生成html?从纯scala块生成html

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

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

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

回答

0

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

@Html(block()) 

或者,包裹的block返回值在Html

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

您可以在T阅读更多关于这他在本页底部的标题为“逃离”的部分中播放文档:

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