質問

異なる HTTP エラーをレンダリングするカスタムスクリプトまたはエラーハンドラを作成できますか。

回答、解決策

デフォルトのハンドラは /libs/sling/servlet/errorhandler にあります。

/libs/sling/servlet/errorhandler から/apps にある同じ場所(例:/apps/sling/servlet/errorhandler)にカスタマイズしたいスクリプトをコピーすることで、デフォルトのエラー処理をオーバーレイできます。このパスが存在しない場合は作成します(デフォルトでは作成しません)。

例えば、/apps/sling/servlet/errorhandler/404.jsp に /libs/sling/servlet/errorhandler/404.jsp をコピーして、404エラーの処理をカスタマイズできます。

HTTP 500エラーはサーバー側の例外によって発生します。例外の結果を処理する要求する場合、Apache Sling CQ フレームワークは例外のログに基づいており、http エラーコード500および応答の本文スタックトレースから例外が返されます。

500エラーを処理するエラーハンドラスクリプトのファイル名は例外クラス(もしくはスーパークラス)と同じでなければなりません。例えば、すべての例外を処理するには、スクリプト /apps/sling/servlet/errorhandler/Throwable.jsp を作成します。

Sling エラー処理についての詳細は、次のドキュメントを参照してください。http://sling.apache.org/site/errorhandling.html

注意:500.jsp は、HttpServletResponse.sendError(500) が明確に実行された時にのみ、たとえば例外キャッチャーなど、実行されます。
それ以外の場合はレスポンスコードは 500 に設定されていますが、500.jsp は実行されません。
この場合、この例外すべてを処理するために Exception.jsp を追加できます。

注意:オーサーインスタンスでは、CQ WCM デバッグフィルターはデフォルトで有効になります。これにより、レスポンスコードが常に 200 に設定されており、処理に対して完全なスタックトレースをするためデフォルトのエラーハンドラーが使用されます。パブリッシュインスタンスでは、CQ WCM デバッグフィルターは常に無効になっていす(有効にするように設定したい場合は)...

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー