playframework - Play 框架模板参数 - 传递一个子类

标签 playframework playframework-2.1

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

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

我有我的学术小组类(class):
@MappedSuperclass
public abstract class AcademicGroup extends Model

和这样的子类:
@Entity
public class SchoolClass extends AcademicGroup

从另一个模板中调用我的 View 模板已经有效:
@views.html.panels.groups(schoolClasses.asInstanceOf[java.util.List[models.groups.AcademicGroup]])

什么不起作用,是通过 Controller 直接传递子类:
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>

最佳答案

感谢 serejja!

路过List[_ <: AcademicGroup]作品!

这等于 List<? extends AcademicGroup>
添加一个 + Carsten 提到的签名会导致编译器错误

关于playframework - Play 框架模板参数 - 传递一个子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18101532/

相关文章:

java - Scala Play Framework 和 NIO.2

scala - 通过命令行更改 'play dist' 输出文件名

java - FakeRequest 类型 Promise 的结果

java - Play Framework 2.4 - Java - Http header 和缓存响应

java - Play 框架 2.1.2 -> 2.1.3 : java. lang.UnsupportedClassVersionError

scala - Play Framework 2.1.2 中定义的 play20.welcome 方法

CoffeeScript 未在 Play 2.1.0 中编译

java - 无法使用 play 框架运行 Junit 测试

playframework - Play 框架在启动时挂起,位置为 : "Loading project definition from"

scala - 使用 Play Json 将可选的 json 字段转换为选项?