我正在为Scala尝试Play 2.4.2,我不清楚控制器是应该被定义为类还是单例。文档声明:
Controller只不过是一个生成的单例对象 行动价值。
但是代码示例显示:
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:type application is 不是包控制器的成员
哪种方法是正确的?
答案 0 :(得分:10)
如果使用静态路由器,您的控制器应该是对象。静态是Play 2.4中的默认路由器,与Play 2.3及之前的行为相同。
如果使用Play 2.4中新增的注入路由器,则可以将控制器转换为类。您需要在build.sbt
:
routesGenerator := InjectedRoutesGenerator
更新:注入的路由器现在是Play 2.5中的默认路由器