在Play Framework中创建自定义的404/500错误页面

如何使用Play为404/505错误页面创建全局自定义查找?

在Play Framework 1中,您只需修改提供的app/views/errors/404.htmlapp/views/errors/500.html

error handling在2.5.x中已更改。 您现在需要一个ErrorHandler来处理错误并自己显示自定义错误页面。

2.5.x的文档说:

提供自定义error handling程序

 import play.api.http.HttpErrorHandler import play.api.mvc._ import play.api.mvc.Results._ import scala.concurrent._ import javax.inject.Singleton; @Singleton class ErrorHandler extends HttpErrorHandler { def onClientError(request: RequestHeader, statusCode: Int, message: String) = { Future.successful( Status(statusCode)("A client error occurred: " + message) ) } def onServerError(request: RequestHeader, exception: Throwable) = { Future.successful( InternalServerError("A server error occurred: " + exception.getMessage) ) } } 

您可以在Github上找到默认的错误页面: https : //github.com/playframework/playframework/tree/master/framework/src/play/src/main/scala/views/defaultpages

有关更多详细信息,请参阅https://www.playframework.com/documentation/2.5.x/ScalaErrorHandling 。

在2.3.x的文档中:

提供应用程序错误页面

当您的应用程序发生exception时,将调用onError操作。 默认是使用内部框架错误页面:

 import play.api._ import play.api.mvc._ import play.api.mvc.Results._ import scala.concurrent.Future object Global extends GlobalSettings { override def onError(request: RequestHeader, ex: Throwable) = { Future.successful(InternalServerError( views.html.errorPage(ex) )) } } 

资料来源: https : //www.playframework.com/documentation/2.3.x/ScalaGlobal#Providing-an-application-error-page

找不到(404)错误页面

你需要一个onHandlerNotFound处理程序和上面的onError处理程序:

 override def onHandlerNotFound(request: RequestHeader) = { Future.successful(NotFound(views.html.errors.notFoundPage())) } 

来源:这没有记录,但请查看GlobalSettings特征定义。

默认错误页面模板源

可以在此处阅读2.3.x生产中的默认错误模板的来源:

https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/scala/views/defaultpages/error.scala.html