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
请给我一些帮助:
- 如何将变量转换为指定类型
- 如何验证变量type/instance
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" 条件,这看起来会更干净
我在 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
请给我一些帮助:
- 如何将变量转换为指定类型
- 如何验证变量type/instance
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" 条件,这看起来会更干净