我创建了一个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
为什么控制器不可见?
答案 0 :(得分:2)
这可能是因为您的路由引用了静态控制器,即object
而不是类。有几种不同的方法可以解决这个问题:
将您的控制器声明为对象:
object Application extends Controller {
...
}
或者,您可以使用@
为路由操作引用添加前缀,指示它是在调用路由时应该实例化的类:
GET / @controllers.Application.index
您还可以使用注入,而不是(默认)静态路由器,这涉及将以下行添加到build.sbt
:
routesGenerator := InjectedRoutesGenerator
在Play 2.0的早期版本中,控制器始终是静态对象,但在最近的版本中,通常使用一个类,您可以在其中注入组件。有关详细信息,请查看routes documentation。