OmniFaces FullAjaxExceptionHandlerを使用してエラーページを表示しています。エラーページは正しく表示されますが、これらのページのスタイリングに問題があります。h:FullAjaxExceptionHandlerを使用しているときにボディが再レンダリングされない
私のアプリケーションはbody要素にCSSクラスが定義されたテンプレートを使用しています。これらのクラスは、通常のページとエラーページのために異なっている:
通常のページ:
<h:body styleClass="main-body layout-compact">
エラーページ:FullAjaxExceptionHandlerが例外を処理
が 、エラーページに転送が実行されます( (web.xml
の<error-page>
メカニズムに基づく)。 HTML出力をチェックすると、<body>
タグに(エラーページのクラスではなく)通常のページのCSSクラスがまだ含まれていることがわかるので、これは<h:body>
タグを再レンダリングしないことは明らかです。
元の<h:body>
の内容は、完全な<h:body>
を置き換える代わりに、エラーページ<h:body>
の内容に置き換えられているようです。これがデフォルトのJSF/FullAjaxExceptionHandlerの動作であるかどうかはわかりません。
<h:body>
を正しいCSSクラスでレンダリングする方法はありますか? <h:body>
からCSSクラスを移動することは選択できません。
フォワード・エラー・ページを実行すると、ajaxコールではないので、再レンダリングはできません。代わりに、新しいまったく新しいエラーページをロードしています。転送が正しく行われているかどうかを確認してください。その場合、bodyタグに正しいCSSが適用されます。 – OTM
ForwardはFullAjaxExceptionHandlerによって正しく実行されますが、私は自分で転送を行っていません。エラーページが表示され(同じURLの下に)、
の内容全体が変更されます。しかし、タグには、前のページのCSSクラスがあります。ボディータグは再レンダリングされず、内容だけが再レンダリングされるようです。これが標準のJSFの動作であるかどうかはわかりません。 – baraskae