エラーハンドラーによって表示されるページのカスタマイズ

AEMには、HTTPエラーを処理するための標準的なエラーハンドラが付属しています。例えば、次のように表示します。

chlimage_1-67

エラーコードに応答するためにシステムが提供するスクリプト(/libs/sling/servlet/errorhandlerの下)が存在します。デフォルトでは、次のスクリプトが標準のCQインスタンスで使用できます。

  • 403.jsp
  • 404.jsp
メモ

AEMはApache Slingを基にしているので、Slingエラー処理の詳細については、https://sling.apache.org/site/errorhandling.htmlを参照してください。

メモ

オーサーインスタンスでは、CQ WCM Debug Filter がデフォルトで有効です。このフィルターは常に応答コード 200 を返します。デフォルトのエラーハンドラーは、応答に対してフルスタックトレースを書き込むことで応答します。

パブリッシュインスタンスでは、CQ WCM Debug Filter は、有効として設定されている場合も含めて常に無効になります。**

エラーハンドラーによって表示されるページのカスタマイズ方法

エラーが発生した場合にエラーハンドラーによって表示されるページをカスタマイズする独自のスクリプトを作成できます。 カスタマイズしたページが/appsの下に作成され、(/libsの下の)デフォルトのページにオーバーレイされます。

メモ

詳しくは、オーバーレイの使用方法を参照してください。

  1. リポジトリ内で、デフォルトスクリプトをコピーします。

    • /libs/sling/servlet/errorhandler/ から
    • /apps/sling/servlet/errorhandler/

    コピー先のパスはデフォルトでは存在しないので、最初は作成する必要があります。

  2. /apps/sling/servlet/errorhandler に移動します。次のどちらかを実行します。

    • 既存のスクリプトを編集し、必要な情報を追加します。
    • 必要とするコード用に新しいスクリプトを作成し、編集します。
  3. 変更を保存し、テストします。

注意

404.jsp および 403.jsp ハンドラーは、CQ5 認証に合わせて設計されています。特に、これらのエラーの発生時にシステムログインができるようになっています。

そのため、これらの 2 つのハンドラーを置き換える際には十分に気をつけて作業してください。

HTTP 500 エラーへの応答のカスタマイズ

HTTP 500 エラーはサーバー側の例外によって発生します。

要求処理の結果例外が発生した場合、Apache Slingフレームワーク(AEMが構築されているフレームワーク):

  • 例外をロギングします。

  • 次を返します。

    • HTTP 応答コード 500
    • 例外スタックトレース

    これらは応答の本文内で返されます。

エラーハンドラーによって表示されるページをカスタマイズすることで、500.jsp スクリプトを作成できます。ただし、HttpServletResponse.sendError(500)が明示的に実行された場合にのみ使用されます。例えば、例外キャッチャーから。

それ以外の場合は、応答コードは に設定されますが、500.jsp500. スクリプトは実行されません。

500 エラーを処理するには、エラーハンドラースクリプトの名前を例外クラス(またはスーパークラス)と同じにする必要があります。このような例外をすべて処理するには、スクリプト/apps/sling/servlet/errorhandler/Throwable.jspまたは/apps/sling/servlet/errorhandler/Exception.jspを作成します。

注意

オーサーインスタンスでは、CQ WCM Debug Filter がデフォルトで有効です。このフィルターは常に応答コード 200 を返します。デフォルトのエラーハンドラーは、応答に対してフルスタックトレースを書き込むことで応答します。

カスタムエラーハンドラーの場合、コード 500 を含む応答が必要です。そのため、CQ WCM Debug Filter を無効にする必要があります。そうすることで、応答コード 500 が返され、それによって正しい Sling エラーハンドラーがトリガーされます。

パブリッシュインスタンスでは、CQ WCM Debug Filter は、有効として設定されている場合も含めて常に無効になります。**

このページ

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now