JSF facelet のロード中にエラーが発生すると、JSF はエラーの時点でページのレンダリングを停止し、代わりにエラー ページを表示します (デフォルトの動作)。代わりに JSF にページのレンダリングを継続させ、ページ内に例外/エラーを表示させたい。たとえば、ページが例外をスローする「ポートレット」をロードしている場合、その例外はポートレット内のテキストとして表示されます。ページ全体を別のエラー ページに転送したくありません。
私は自分自身ExceptionHandlerFactory
とExceptionHandler
実装を初期化し、正常に繰り返すことができましたExceptionQueueEvents
。ただし、エラーにもかかわらずページのロードを続行するように JSF に指示する方法がわかりません。これはまったく正しいアプローチですか?ExceptionHandler は、(私が推測するように) 後に呼び出されますか、または facelet の処理中に呼び出されますか? その後、私の中でできることはありますExceptionHandler
か?
私は私がすべきことを知っています:
- ユーザーがアクセスできない部分を非表示にします(私の特定のケースは、ユーザーが権限を持たないコンテンツを読み込もうとしたときのセキュリティに関連しています。ただし、これに対するグローバルな回答を探しています)
- エラーを手動で処理して、予期しない例外がスローされないようにする
ただし、一部のコンポーネントに小さな障害が発生した場合でも、ユーザーが引き続きシステムを使用できるようにしたいと考えています (たとえば、一部のニュースフィード ポートレットがエラーをスローした場合、ユーザーが他のコンテンツを表示して使用することを妨げてはなりません)。
Mojarra 2.0.2 を使用しています。これは非常に簡単に解決できると思いますが、理解できません:(