20

我正在向模板传递一个Event对象,我需要做的是检查@event.getSeverity值。如果值为正,我想将特定<div>的颜色涂成绿色。如果该值为负数,我想将特定<div>的颜色涂成红色。

我找不到定义变量的方法。可能吗?我认为应该是。
无论如何,最简单的方法是什么?

谢谢

4

4 回答 4

42

Play 文档中所述,您可以使用@defining帮助程序。

@defining(if (event.getSeverity > 0) "green" else "red") { color =>
    <div style="background-color: @color">foo</div>
}

或者你可以使用一个reusable block

@severityColor(event: Event) = @{
    if (event.getSeverity > 0) "green" else "red"
}

<div style="background-color: @severityColor(event)">foo</div>
于 2012-10-24T20:13:29.067 回答
10

另一种变体。如果在导入部分之后声明,则可以正常工作。否则可能会导致一些错误(“未找到值”)

@import play.i18n.Messages
@import models.Customers

@customers = @{Customers.allAccepted()}

...

@if(customers.size()>0) {
    <ul>
        @for(customer <- customers) {
            <li>
                <a href="/filters/customer/@customer.id">@customer.name</a>
            </li>
        } 
    </ul>
}
于 2016-02-04T08:29:26.517 回答
9

在 scala 模板中试试这个

@import java.math.BigInteger; var i=1; var k=1  

对于字符串

@import java.lang.String; val name="template"

在问题方面

@import java.lang.String; var color="red"
@if(event.getSeverity>0){
@{color="green"}
}
<div style="background-color: @color">foo</div>
于 2014-02-26T15:28:17.177 回答
2

" for " 推导式有时也很有用:
@for(id <- products.keys; product = products(id); author = product.author.getOrElse("N/A")) {... @product.name ... @author

于 2016-12-10T20:32:07.213 回答