【问题标题】:Controller not seen没有看到控制器
【发布时间】:2016-03-06 05:09:14
【问题描述】:

我创建了一个 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

为什么控制器不可见?

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

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

    将你的控制器声明为一个对象:

    object Application extends Controller {
        ...
    }
    

    或者,您可以在路由操作引用前加上@,表示它是一个在调用路由时应该实例化的类:

    GET      /                   @controllers.Application.index
    

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

    routesGenerator := InjectedRoutesGenerator
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多