在Scala模板中为变量创建和赋值

时间:2013-12-30 23:01:38

标签: java scala playframework

我无法从文档中提供的示例中解决此特定情况。

我创建了一个结果:

    Customer customer = new Customer("James");
    Order[] orders = new Order[2];
    orders[0] = new Order("Apple");
    orders[1] = new Order("Orange");
    Content html = views.html.template.render(customer, orders);
    return ok(html);

我的模板是:

@(customer: Customer, orders: Array[Order])

<h1>Welcome @customer.name!</h1>

<ul> 
    @for(order <- orders) {
      <li>@order.name</li>
    }
</ul>

现在我想在模板中添加一个布尔变量,然后遍历订单,如果Apple出现在订单中,我想将创建的变量设置为true。

基本上我需要一个在整个模板中都有范围的var。

谢谢。

添加了一些伪代码。

@(customer: Customer, orders: Array[Order])

<h1>Welcome @customer.name!</h1>

**** var containsApple = false;

<ul> 
    @for(order <- orders) {
      <li>@order.name</li>

      **** if order.name == "apple"
      ****   containsApple = true;

    }
</ul>

2 个答案:

答案 0 :(得分:3)

我肯定会将此逻辑移到控制器中以避免意大利面条代码。否则,您可以声明一个新的变量:Declare variable in a Play2 scala template

答案 1 :(得分:2)

我不能代表播放模板,但在常规的Scala中,这将是:

val containsApple = orders.exists(_.name == "apple")

不需要var或任何其他形式的可怕的可变性。