java - playFramework 中 Scala View 模板的转换和实例

标签 java scala templates view playframework

我在 PlayFramework2.2.6 的 Scala View 中循环遍历 Person 的集合。 Person 类是 UserContact 类的父类(super class)。

在循环时我想访问一些为扩展类指定的参数,例如 User 类中的 email 属性。

这是模型的类:

public class Person {
  int id;
  String name;
  Date date;
}
public class User extends Person {
  String email;
  String login;
  String password;
}
public class Contact extends Person {
  Address address;
}

public class Customer {
  List<Person> persons;


  // AND NOW I WOULD LIKE TO DO THIS IN SCALA TEMPLATE


  public void print() {
    for(Person person: this.persons) {
      if(person instanceof User) {}
        System.out.println(((User)person).email);
      }
  }
}

View 层:

@for(person <- persons) {
  @if(person instanceOf User) {
     @((User)person).email
  }
}

但是我得到一个错误:

value instanceOf is not a member of models.Person

请给我一些帮助:

  • 如何将变量转换为指定类型
  • 如何验证变量的类型/实例

在 PlayFramework 的 Scala 模板/ View 层中。 谢谢。

最佳答案

Scala/Twirl 的等价物应该是:

验证实例类型:

person.isInstanceOf[User] // bool?

转换:

person.asInstanceOf[User] // User instance

关于java - playFramework 中 Scala View 模板的转换和实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30574831/

相关文章:

java - 如何在使用 asm 库进行检测的方法中查找空的局部变量

scala - 理解 Scala 中的 IO monad

Java GTK+ 原生外观和感觉看起来很糟糕且大胆

java - CrudRepository 无法对 h2 db 执行任何查询

Android:Emulator -ramdisk 命令行选项损坏

scala - 喷:路由——了解path和pathPrefix的区别

c++ - 使用默认的其他模板参数推导第一个模板参数

C++ 一种为成员函数提供 typedef 模板的方法?

c++ - 如何将模板的实例传递给另一个模板的另一个实例?

java - 从 firebase 方法明智地检索数据