Play Frameworkにカスタマイズされた404/500エラーページを作成します -- java フィールド と playframework フィールド 関連 問題

Creating a customized 404/500 error page in Play Framework












13
vote

問題

日本語

グローバルを作成する方法、カスタムは404/505のエラーページを使用してPLAYを使用して探しますか?

英語

How can one create global, custom looks for their 404/505 error pages using Play?

</div
     

回答リスト

12
 
vote
vote
ベストアンサー
 

Playフレームワーク1では、提供されている<コード> app/views/errors/404.html と<コード> app/views/errors/500.html を変更するだけです。

 

In Play Framework 1, you simply have to modify the provided app/views/errors/404.html and app/views/errors/500.html .

</div
 
 
         
         
8
 
vote

2.5.xでエラー処理が変更されました。エラーを処理し、自分でカスタムエラーページを表示するには、 ErrorHandler が必要です。

2.5.xの文書:

カスタムエラーハンドラ

の供給 <事前> <コード> 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詳細については

 

Error handling changed in 2.5.x. You now need an ErrorHandler to handle errors and display custom error pages yourself.

The documentation for 2.5.x says:

Supplying a custom error handler

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)     )   } } 

You can find the default error pages on Github: https://github.com/playframework/playframework/tree/master/framework/src/play/src/main/scala/views/defaultpages

See https://www.playframework.com/documentation/2.5.x/ScalaErrorHandling for more detail.

</div
 
 
4
 
vote

2.3.xの資料で:

アプリケーションエラーページ

アプリケーションで例外が発生した場合、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)エラーページ

上記の onError ハンドラ:

に沿って onHandlerNotFound Handlerが必要です。 <事前> <コード> await0

ソース:これは文書化されていませんが、 await1 形式の定義を参照してください。

デフォルトのエラーページテンプレートソース

2.3.xのプロダクション内のデフォルトのエラーテンプレートのソースをここで読むことができます。

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

 

In documentation for 2.3.x:

Providing an application error page

When an exception occurs in your application, the onError operation will be called. The default is to use the internal framework error page:

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)     ))   }  } 

Source: https://www.playframework.com/documentation/2.3.x/ScalaGlobal#Providing-an-application-error-page

Not found (404) error page

You'll need a onHandlerNotFound handler alongside the above onError handler:

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

Source: this is not documented but have a look in the GlobalSettings trait definition.

Default error page template source

The source for the default error template in production for 2.3.x can be read here:

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

</div
 
 
0
 
vote

これを使用できます。

<事前> <コード> import javax.inject.{Inject, Singleton} import play.api.http.DefaultHttpErrorHandler import play.api.mvc.Results._ import play.api.mvc.{RequestHeader, Result} import scala.concurrent.{ExecutionContext, Future} @Singleton class ErrorHandler @Inject()(implicit executionContext:ExecutionContext) extends DefaultHttpErrorHandler{ override def onServerError(request: RequestHeader, exception: Throwable): Future[Result] = { exception match { case e:scala.MatchError => Future(Ok("Page Not Found")) case _ => Future(Ok("Internal Server Error :(")) } } }
 

You can use this :

import javax.inject.{Inject, Singleton} import play.api.http.DefaultHttpErrorHandler import play.api.mvc.Results._ import play.api.mvc.{RequestHeader, Result}  import scala.concurrent.{ExecutionContext, Future}  @Singleton class ErrorHandler @Inject()(implicit executionContext:ExecutionContext) extends   DefaultHttpErrorHandler{    override def onServerError(request: RequestHeader, exception: Throwable): Future[Result] = { exception match {   case e:scala.MatchError => Future(Ok("Page Not Found"))   case _ => Future(Ok("Internal Server Error :("))  }  }   } 
</div
 
 

関連する質問

11  コントローラからのビジネスロジックをリファクタリングするための慣性的な、慣用の方法  ( Good idiomatic way to refactor out business logic from controllers ) 
私はスカラとプレイに新しいです。そして、ビジネスとプレゼンテーションロジックの両方を含む「すべての」コントローラを書きました。私はコントローラからビジネスロジックをリファクタリングしたいです。 これは私のScala / Playのようなものです。クリーンなイ...

0  どういうわけか自動的にモデルからフォームをバインドできますか?  ( Can i bind a form from a model automatically somehow ) 
だから私は私のユーザーコントローラに次の方法を持っています: <事前> <コード> def create def onCreate def edit(userId: Int) create新しいフォームを表示するoncreateは投稿を処理します。 ...

0  プレイ1.2.5で@beforeアノテーションを使用してください。  ( Use before annotation in play 1 2 5 ) 
セッションを確認する前にセッションを確認したい ログインへのユーザー - それぞれのURL要求はかどうかを確認する これは有効なセッションからです - そうでない場合は、それらをログインページに送信します。 それ以外のプロセスは正常にプロセスします。ユーザーが...

1  secure.login()を強化するための手段としてリダイレクトして、別のコントローラから1つのコントローラを呼び出すことは可能ですか?  ( Is it possible to call one controller from another controller without redirectin ) 
Play Secure Moduleを使用しています。成功するとブラウザは最初にログインしたページにリダイレクトされます。賢明なデフォルトを本質的に定義します。 理想的には、このロジックを配置できるカスタムセキュリティクラス(例えば、 Security.on...

2  @ crudを使用するときにCRUDテンプレートを上書きすることができないのはなぜですか?  ( Why am i not able to override crud template when using crud for ) 
私は Play Tutorial と小さくてビットI Default Model Name Pluralizedを使用する代わりに、@ crud.forを使用することにしました。問題は、私がそのモデルのテンプレートを上書きしようとしていて、@ crud.for...

0  JavasCripTroutes Play Framework 2.3を使用すると、jSroutes.Controllersが未定義です。  ( Error jsroutes controllers is undefined when use javascriptroutes play framework ) 
私はこのようなjavascripTroutes応答を持っています: http://pastebin.com/7rsa5wzj 私のテンプレートでは、私は使用しました: <コード> class User < ActiveRecord::Base ha...

0  ルートを使用せずに再生中の認証  ( Authenticating in play without using routes ) 
認証のためのこのチュートリアルに続いています: http://www.playframework.com/documentation/2.2.x/javaguide4 < / a> しかし、私は、ユーザーがすでにログインしている場合でもユーザーがmyap...

6  Library facebookログインをプレイフレームワークで統合するためのライブラリ? [閉まっている]  ( Library to integrate facebook login with play framework ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? O...

0  ロングタイプのセッション値を格納します  ( Storing session value in long type ) 
Scalaを使用したプレイフレームワークでのセッション内の文字列としてIDを格納しています。 <事前> <コード> $("#brand div").each(function(e) { $(this).delay(600*e).fadeTo('slow',1...

2  NetBeansからの再生フレームワークテストを実行します  ( Run play framework test from netbeans ) 
テストモードでプレイアプリケーションを開始する方法はNetBeans内からですか? NetBeans内から通常の実行モードで再生アプリケーションを起動する方法がわかりますが、テストモードではありません。 ()これをやることができますか? ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有