我需要使用最新的 Play Framework 2.1.1 消息,变量,简单的循环等在Scala模板中打印一些原始HTML。一切正常。但是如果我需要做一些逻辑并将原始HTML打印到模板中呢?
@{
val courts = venue.getCourts()
val totalWidth : Int = 920
.. some other initialization variables/values
var output : String = ""
for(court <- courts) {
output += "<p>SomeComplexString</p>"
}
output
}
在这种情况下,@{}
函数会返回output
,但HTML会被转义,而且不太实际(在返回之前将所有内容合并到单个output
变量中)。
如果我提出类似
的内容for(court <- courts) {
println("<p>SomeComplexString</p>")
}
它不起作用(我没有得到任何编译错误,但输出中没有任何内容)。
我能做到
@for(court <- courts) {
<p>SomeComplexString</p>
}
但是courts
会超出范围(我只能说我不能在开头将courts
定义为模板变量)。
解决方案是什么?
答案 0 :(得分:15)
但是如果我需要做一些逻辑并将原始HTML打印到模板中呢?
与其他MVC框架一样,Play Framework建议严格区分关注点。您的逻辑必须在您的控制器中,而不是在视图中。这就是为什么在scala模板中执行此操作相对复杂。
此外,您可以使用@Html()显示未转义的变量。