控制器没见过

时间:2016-03-05 19:54:02

标签: scala playframework

我创建了一个Scala项目,并在/app/controllers中添加了以下控制器:

package controllers

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

class Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

}

我已将其index方法添加到路径文件中:

GET      /                          controllers.Application.index

但是,当我在浏览器中访问localhost:9000时,出现错误:

type Application is not a member of package controllers

为什么控制器不可见?

1 个答案:

答案 0 :(得分:2)

这可能是因为您的路由引用了静态控制器,即object而不是类。有几种不同的方法可以解决这个问题:

将您的控制器声明为对象:

object Application extends Controller {
    ...
}

或者,您可以使用@为路由操作引用添加前缀,指示它是在调用路由时应该实例化的类:

GET      /                   @controllers.Application.index

您还可以使用注入,而不是(默认)静态路由器,这涉及将以下行添加到build.sbt

routesGenerator := InjectedRoutesGenerator

在Play 2.0的早期版本中,控制器始终是静态对象,但在最近的版本中,通常使用一个类,您可以在其中注入组件。有关详细信息,请查看routes documentation