在playFramework中的scala视图模板中的强制转换和实例

mas*_*y88 1 java templates scala view playframework

Person在PlayFramework2.2.6中循环scala视图的集合. Person类是超类的类User,Contact.

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

这是模型的类:

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);
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

视图层:

@for(person <- persons) {
  @if(person instanceOf User) {
     @((User)person).email
  }
}
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

value instanceOf is not a member of models.Person
Run Code Online (Sandbox Code Playgroud)

请给我一些帮助:

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

在PlayFramework的Scala模板/视图层中.谢谢.

Mik*_*ame 5

Scala/Twirl的等价物应该是:

要验证实例类型:

person.isInstanceOf[User] // bool?
Run Code Online (Sandbox Code Playgroud)

施法:

person.asInstanceOf[User] // User instance
Run Code Online (Sandbox Code Playgroud)