播放框架模板参数 - 传递子类

时间:2013-08-07 10:52:59

标签: playframework playframework-2.1

我有一个接受以下参数的视图模板:

@(groups: List[models.groups.AcademicGroup]

我有我的学术小组课程:

@MappedSuperclass
public abstract class AcademicGroup extends Model

和这样的子类:

@Entity
public class SchoolClass extends AcademicGroup

从另一个模板中调用我的视图模板已经有效:

@views.html.panels.groups(schoolClasses.asInstanceOf[java.util.List[models.groups.AcademicGroup]])

什么不起作用,是通过控制器直接传递子类:

public static Result schoolClasses() {
    List<SchoolClass> schoolClasses = SchoolClass.find.all(); 
    return ok(groups.render(schoolClasses));
}

使用这种方法,我收到错误消息:

The method render(List<AcademicGroup>) in the type groups is not applicable for the arguments (List<SchoolClass>)

类型化列表不起作用。有什么我缺少或有一种方式暗示接受子类作为模板参数,就像你可以为Java泛型做:

List<? extends AcademicGroup>

1 个答案:

答案 0 :(得分:2)

感谢serejja!

传递List[_ <: AcademicGroup]有效!

这等于List<? extends AcademicGroup>

只添加+符号,因为Carsten提到会导致编译错误