我正在使用Play framework 2.1.1,当我尝试添加一个Global对象来处理BadRequest,HandlerNotFound等某些情况时,我遇到了一个奇怪的错误:
以下是我的Global.scala的样子:
object Global extends GlobalSettings {
override def onStart(app: Application) {
Logger.info("Application has started")
}
override def onStop(app: Application) {
Logger.info("Application shutdown...")
}
override def onHandlerNotFound(request: RequestHeader): Result = {
NotFound(
views.html.common.notFoundPage(request.path)
)
}
}
以下是我开始申请时所看到的内容:
overriding method onHandlerNotFound in trait GlobalSettings of type (request: play.api.mvc.RequestHeader)scala.concurrent.Future[play.api.mvc.SimpleResult]; method onHandlerNotFound has incompatible type
它实际上在编译时失败并且吐出上面的错误。这背后的原因是什么?我很困惑,因为我的IntelliJ没有显示任何错误!
答案 0 :(得分:1)
您确定在构建项目时使用的是Play Framework 2.1吗?
2.1 branch确实在GlobalSettings
中定义:
def onHandlerNotFound(request: RequestHeader): Result
虽然2.2 branch读取:
def onHandlerNotFound(request: RequestHeader): Future[SimpleResult]
也许您在IntelliJ和构建脚本中配置了不同的版本?
对于2.2版本,你可以写:
override def onHandlerNotFound(request: RequestHeader): Future[SimpleResult] = {
Future.successful(NotFound(
views.html.common.notFoundPage(request.path)
))
}