1

Play!Framework 1.2.5を使用しています。Play フレームワークのすべてのエラーをカスタマイズされた方法で処理したいと考えています。たとえば、ルート エラーが発生した場合、ルート ファイル全体を表示するのではなく、適切なエラー メッセージを表示したいと考えています。他のエラーについても同様に、独自のエラー ページを表示したいと考えています。これを行う方法?

4

2 に答える 2

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

このようにして、アプリケーションで欠落しているルート/間違ったリンクを見つけることができます。

于 2013-03-18T15:32:03.080 に答える
2

errorson packageという名前の新しいサブパッケージを作成することで、独自のエラー ページを定義できますviewsこのサブパッケージでは、次のようなエラー コード名を使用して、カスタマイズしたエラー ページのテンプレート ファイルを作成できます。

  1. 404.html見つからないエラーページの
  2. 403.htmlForbidden Errorページ
  3. 500.html内部サーバー エラーページ用
  4. 等...

デフォルトのルートが見つからないというエラー ページについて心配する必要はありません。これは、開発フェーズを支援するために開発モードでのみ表示されます。プロダクション モードでは、このエラー ページ (デフォルトのフレームワーク エラー ページ) は表示されません。

- アップデート

この@Catch注釈は、他のタイプの例外を処理するのに役立つ場合があります。コントローラーのアクションのインターセプターとして機能し、アクションの実行中に例外が発生した場合に例外を処理します。この注釈はControllerクラスでのみ機能することに注意してください。

詳細については、こちらのドキュメントを参照してください。

于 2013-03-18T10:47:32.930 に答える