Comment définir une page d'erreur personnalisée avec Play framework

Publié le 8 Septembre 2015

Un des avantages de Playframework est qu'il affiche directement le code problématique dans le navigateur. C'est très pratique lors du développement d'une application mais pas vraiment ce qu'on désire une fois en prod.

Par ailleurs on peut vouloir afficher ses propres pages d'erreurs comme par exemple lors d'une page non trouvée.

En fait il est tout à fait possible de définir les comportements à utiliser en définissant un error handler, dans app/ErrorHandler.scala:

import javax.inject._
import play.api.http.DefaultHttpErrorHandler
import play.api._
import play.api.mvc._
import play.api.mvc.Results._
import play.api.routing.Router
import scala.concurrent._

class ErrorHandler @Inject() (
   env: Environment,
   config: Configuration,
   sourceMapper: OptionalSourceMapper,
   router: Provider[Router]
) extends DefaultHttpErrorHandler(env, config, sourceMapper, router) {

   override def onClientError(request: RequestHeader, statusCode: Int, message: String) = statusCode match {
      // 404 - Page non trouvée - on utilise notre propre page d'erreur
      case 404 => Future.successful(NotFound(views.html.Error.notFound()))
      // sinon on utilise le handler par défaut de Play
      case _ => super.onClientError(request, statusCode, message)
   }
}

Rédigé par Bliz

Publié dans #Scala, #Play

Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article