Play!Framework 1.2.5を使用しています。Play フレームワークのすべてのエラーをカスタマイズされた方法で処理したいと考えています。たとえば、ルート エラーが発生した場合、ルート ファイル全体を表示するのではなく、適切なエラー メッセージを表示したいと考えています。他のエラーについても同様に、独自のエラー ページを表示したいと考えています。これを行う方法?
2 に答える
データベースによってスローされたデータベース制約メッセージを把握するには、@iwawiwiが述べたものよりも少し詳細な制御が必要でした。これは、クラスで次@Catch
のようなアノテーションを持つメソッドを使用することで解決されました。Controller
@Catch(value=PersistenceException.class)
public static void handleException(PersistenceException exception) {
..
}
私は以前にその注釈について聞いたことがなく、これは私の状況ではかなりうまくいきました。
欠落しているルートについては、これにも少し追加しましたController
。
@Catch(value=ActionNotFoundException.class)
public static void catchRouteNotFound(ActionNotFoundException exception) {
String referer = session.get("referer");
Logger.error("ActionNotFoundException, referer: %s", referer);
Logger.error("Exception: %s", exception);
}
このようにして、アプリケーションで欠落しているルート/間違ったリンクを見つけることができます。
errors
on packageという名前の新しいサブパッケージを作成することで、独自のエラー ページを定義できますviews
。このサブパッケージでは、次のようなエラー コード名を使用して、カスタマイズしたエラー ページのテンプレート ファイルを作成できます。
404.html
見つからないエラーページの403.html
Forbidden Errorページ500.html
内部サーバー エラーページ用- 等...
デフォルトのルートが見つからないというエラー ページについて心配する必要はありません。これは、開発フェーズを支援するために開発モードでのみ表示されます。プロダクション モードでは、このエラー ページ (デフォルトのフレームワーク エラー ページ) は表示されません。
- アップデート
この@Catch
注釈は、他のタイプの例外を処理するのに役立つ場合があります。コントローラーのアクションのインターセプターとして機能し、アクションの実行中に例外が発生した場合に例外を処理します。この注釈はControllerクラスでのみ機能することに注意してください。
詳細については、こちらのドキュメントを参照してください。