应用全局设置

Global 对象

你可以在项目中定义一个 Global 对象来控制应用的全局设置。这个对象必须在默认(空)包中定义并扩展自 GlobalSettings

  1. import play.api._
  2. object Global extends GlobalSettings {
  3. }

提示:你也可以在 application.global 设置字段中指定一个自定义 GlobalSettings 实现的类名。

关联应用启动和停止事件

你可以重写 onStartonStop 方法来获取应用生命周期中的事件通知:

  1. import play.api._
  2. object Global extends GlobalSettings {
  3. override def onStart(app: Application) {
  4. Logger.info("Application has started")
  5. }
  6. override def onStop(app: Application) {
  7. Logger.info("Application shutdown...")
  8. }
  9. }

提供应用错误讯息页

当你的应用出现一个异常,这将会引发 onError 操作。默认使用内部框架的错误讯息页:

  1. import play.api._
  2. import play.api.mvc._
  3. import play.api.mvc.Results._
  4. import scala.concurrent.Future
  5. object Global extends GlobalSettings {
  6. override def onError(request: RequestHeader, ex: Throwable) = {
  7. Future.successful(InternalServerError(
  8. views.html.errorPage(ex)
  9. ))
  10. }
  11. }

处理丢失的动作和绑定错误

如果框架无法为请求找到一个 Action,这将会引发 onHandlerNotFound 操作:

  1. import play.api._
  2. import play.api.mvc._
  3. import play.api.mvc.Results._
  4. import scala.concurrent.Future
  5. object Global extends GlobalSettings {
  6. override def onHandlerNotFound(request: RequestHeader) = {
  7. Future.successful(NotFound(
  8. views.html.notFoundPage(request.path)
  9. ))
  10. }
  11. }

如果获取的路由无法绑定请求的参数,这将会引发 onBadRequest 操作:

  1. import play.api._
  2. import play.api.mvc._
  3. import play.api.mvc.Results._
  4. import scala.concurrent.Future
  5. object Global extends GlobalSettings {
  6. override def onBadRequest(request: RequestHeader, error: String) = {
  7. Future.successful(BadRequest("Bad Request: " + error))
  8. }
  9. }