PlayFramework Application 2.7.x每种错误类型的自定义错误页面

问题描述 投票:0回答:1

[当控制器返回InternalServerError时,我希望自定义页面以用户友好的方式呈现错误消息。

我在互联网上找到此文档

https://www.playframework.com/documentation/2.3.x/ScalaGlobal

现在,我了解到上述URL对Playframework 2.7不再有效。我搜索了更多,发现了此

https://www.playframework.com/documentation/2.7.x/ScalaErrorHandling

但是这与旧的错误处理程序不同。过去我可以处理onHandlerNotFoundonBadRequestonInternalServerError,但现在我只能处理的是onServerError

采用从HttpErrorHandler扩展的新方法,如何根据每种错误类型将响应发送到自定义错误页面。

编辑:也许这个问题不清楚。在错误处理程序中,我想将错误发送到自定义错误页面。这在播放2.3.x的示例中已显示,我可以这样做

object Global extends GlobalSettings {
  override def onError(request: RequestHeader, ex: Throwable) = {
    Future.successful(InternalServerError(
      views.html.errorPage(ex)
    ))
  }
}

我想在Play 2.7.x及更高版本中执行类似的操作。

scala playframework
1个回答
0
投票

[如果要为未处理的异常提供自定义错误页面,就像在Play 2.3中使用onError方法,在Play 2.7中使用onServerError方法实现ErrorHandler。

@Singleton
class ErrorHandler extends DefaultHttpErrorHandler {

  override def onServerError(request: RequestHeader, ex: Throwable): Future[Result] = {
    Future.successful(
      InternalServerError(views.html.errorPage(ex))
    )
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.