7

我正在为 Scala 尝试 Play 2.4.2,但我不清楚控制器是否应该定义为类或单例。文档状态:

Controller 只不过是一个生成 Action 值的单例对象。

但是代码示例显示:

class Application extends Controller { ... }

更复杂的是,如果我定义了一个类,intellij 会给我一个警告:

智能警告

但是,如果我使用单例,则会出现编译错误(但没有警告):

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller { ... }

错误:(6,-1)播放 2 编译器:/Users/Toby/IdeaProjects/play-scala/conf/routes:6:类型应用程序不是包控制器的成员

哪种方法是正确的?

4

1 回答 1

10

如果您使用静态路由器,您的控制器应该是对象。静态是 Play 2.4 中的默认路由器,与 Play 2.3 及之前的行为相同。

如果您使用 Play 2.4 中新增的注入路由器,您可以将控制器转换为类。您需要在您的build.sbt

routesGenerator := InjectedRoutesGenerator

更新:注入的路由器现在是 Play 2.5 中的默认设置

于 2015-07-11T15:20:34.137 回答