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

Java playFramework中scala视图模板中的强制转换和实例,java,scala,templates,view,playframework,Java,Scala,Templates,View,Playframework,我正在PlayFramework2.2.6的scala视图中循环收集Person。 Personclass是类User,Contact的超类 在循环时,我想访问一些为扩展类指定的参数,如User类中的email属性 以下是模型的类: public class Person { int id; String name; Date date; } public class User extends Person { String email; String login; St

我正在PlayFramework2.2.6的scala视图中循环收集
Person
Person
class是类
User
Contact
的超类

在循环时,我想访问一些为扩展类指定的参数,如
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);
      }
  }
}
请在以下方面给我一些帮助:

  • 如何将变量强制转换为指定类型
  • 如何验证变量的类型/实例
在PlayFramework的Scala模板/视图层中。
谢谢。

Scala/Twirl等效物应为:

要验证实例类型,请执行以下操作:

person.isInstanceOf[User] // bool?
铸造:

person.asInstanceOf[User] // User instance

Scala/Twirl等效值应为:

要验证实例类型,请执行以下操作:

person.isInstanceOf[User] // bool?
铸造:

person.asInstanceOf[User] // User instance
使用模式匹配:

@for(person <- persons) {
  @person match {
    case _ : User => {@{_.email}}  
    case _ => {@{}}
  }
}
@for(person{{{.email}
案例{uu=>{@{}
}
}
如果您需要设置“如果接触类型”条件,这将看起来更干净。

使用模式匹配:

@for(person <- persons) {
  @person match {
    case _ : User => {@{_.email}}  
    case _ => {@{}}
  }
}
@for(person{{{.email}
案例{uu=>{@{}
}
}
如果你需要做一个“如果接触类型”的条件,这将看起来更干净