playFramework 中 Scala 视图模板的转换和实例

Cast and instance of in scala view template in playFramework

我在 PlayFramework2.2.6 的 Scala 视图中循环 Person 的集合。 Person class 是超级 class 对于 classes User,Contact.

循环时我想访问一些指定用于扩展 classes 的参数,例如 User class.

中的 email 属性

这是模型的 classes:

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);
      }
  }
}

视图层:

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

但是我得到一个错误:

value instanceOf is not a member of models.Person

请给我一些帮助:

Scala template/view PlayFramework 层。 谢谢。

Scala/Twirl 等价物应该是:

验证实例类型:

person.isInstanceOf[User] // bool?

要投:

person.asInstanceOf[User] // User instance

使用模式匹配:

@for(person <- persons) {
  @person match {
    case _ : User => {@{_.email}}  
    case _ => {@{}}
  }
}

如果您需要制作 "If type of Contact" 条件,这看起来会更干净