[英]Variable within scala template in play framework
我需要能夠聲明變量,並且在稍后進行一些標記后,我需要引用它們。 為了做到這一點,這是我的 scala 模板的簡化版本:
@(map1:
java.util.LinkedHashMap[String,java.util.LinkedHashMap[String,Object]])
@import scala.collection.JavaConversions._
@import play.Logger
@for( (key,value) <- map1) {
<div>
@{
val rmap = Foo.someMethod(value)
val baz = rmap.getOrElse("baz", null)
<table border="0" cellpadding="0" cellspacing="0" >
<tbody>
<tr>
<td rowspan="3">
<div class="bar">
@baz
</div>
</td>
</tr>
</tbody>
</table>
}
</div>
}
以上是有效的 scala 模板,如果不是,我如何聲明 baz 並稍后在標記中引用它? 我正在使用 1.2.2RC2 和 scala 0.9.1
我很好奇,所以做了一些挖掘。 請參閱https://groups.google.com/forum/#!topic/play-framework/Mo8hl5I0tBQ - 目前沒有辦法,但顯示了一個有趣的解決方法。 定義utils/Let.scala:
package utils
Object Let {
def let[A,B](a:A)(f:A=>B):B = f(a)
}
接着
@import utils.Let._
@let(2+3){ answer =>
@answer <hr> @answer
}
這是一種非常實用的處理方式,但是,您對 Scala 有什么期望:)
您可以只使用 for 理解:
@for( (key,value) <- map1;
rmap = Foo.someMethod(value);
baz = rmap.getOrElse("baz", null)
) {
<div>
<table border="0" cellpadding="0" cellspacing="0" >
<tbody>
<tr>
<td rowspan="3">
<div class="bar">
@baz
</div>
</td>
</tr>
</tbody>
</table>
</div>
}
...如果你沒有任何需要循環的東西,你可以說@for(i <- List(1); <declare variables>){<html here>}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.