在Play Framework中创建自定义的404/500错误页面
如何使用Play为404/505错误页面创建全局自定义查找?
在Play Framework 1中,您只需修改提供的app/views/errors/404.html
和app/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生产中的默认错误模板的来源: