我的 Play2 模板引擎有问题。有些变量在渲染过程中不会被解释。
当变量 {key.getKey} 用双引号引起来时,它不会被解释。我该如何解决这个问题?
Play 2.2.3 模板 (index.scala.html)
@flash
@(if (flash.size > 0) {
flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius {key.getKey}" data-alert="">
{key.getKey.toUpperCase} — {key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
})
HTML 输出:
{"success": "The item has been created"}
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius {key.getKey}" data-alert="">
SUCCESS — The item has been created
<a href="#" class="close">×</a>
</div>
</div>
</div>
使用 @ 变量玩 2.2.3 模板 (index.scala.html)
@flash
@(if (flash.size > 0) {
flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
{key.getKey.toUpperCase} — {key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
})
HTML 输出:
{"success": "The item has been created"}
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
SUCCESS — The item has been created
<a href="#" class="close">×</a>
</div>
</div>
</div>
最佳答案
编辑:由于之前不清楚这是 Scala 还是 Java,所以我修改了我的答案以使用 Play Java。
模板在 Java 中的工作方式似乎略有不同,并且 if
语句周围的括号把事情弄乱了。无论如何,您实际上并不需要 if 语句,因为映射空迭代器不会执行任何操作。这有效:
@flash.entrySet.iterator.map { key =>
<div class="row">
<div class="large-12 columns">
<div class="alert-box radius @{key.getKey}" data-alert="">
@{key.getKey.toUpperCase} — @{key.getValue}
<a href="#" class="close">×</a>
</div>
</div>
</div>
}
如果你真的想要if
:
@if(flash.size > 0) {
(above code)
}
关于java - play2 模板上未解释变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063335/