根据以下页面,当遇到服务器错误时,可以提供一个自己的错误页面。
https://www.playframework.com/documentation/2.2.x/ScalaGlobal http://alvinalexander.com/scala/handling-scala-play-framework-2-404-500-errors
为此,您需要使用以下内容覆盖app.Global.onError()方法:
UILabel
但是,我不想使用InternalServerError(),而是使用我自己的页面创建方法来创建整个页面:html,head,body标签等等。
所以我想按以下方式覆盖该方法:
override def onError(request: RequestHeader, ex: Throwable) = {
Future.successful(InternalServerError(
views.html.errorPage(ex)
))
}
PageCtrl.render()方法创建我的所有页面。我也想创建错误页面。 render()方法确保所有页面都包含所有正确的JavaScript和CSS引用,正确的页眉和页脚等。
但是,当我调用render()方法时,我收到以下错误:
override def onError(request: RequestHeader, ex: Throwable) = {
controllers.PageCtrl.render("error", "500")
}
问题:那么我如何将AnyContent数据类型转换为Result数据类型呢?
答案 0 :(得分:1)
我建议保留用于本地开发的默认错误处理程序(因为它对查看异常和编译问题很有用)。您可以使用以下内容完成所需操作:
override def onError(request: RequestHeader, ex: Throwable): Future[Result] = {
if (play.api.Play.isDev(play.api.Play.current)) {
super.onError(request, ex)
} else
Future {
InternalServerError(
views.html.myawesomeerrorpage()
)
}
}