1

私のJSFアプリケーションでは、例外が発生するたびにJSFページが表示されるはずです。これは、エラーが発生したことをユーザーに示すように設計されていますが、そのようなことは発生しません。これは大きな問題です。

私のweb.xmlの一部

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/faces/error.jsf</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/faces/error.jsf</location>
   </error-page>
4

1 に答える 1

4

これは、ajax 要求中に例外が発生した場合、または応答が既にコミットされているときに例外が発生した場合に発生する可能性があります。

ajax リクエストの例外は、カスタムで処理する必要がありますExceptionHandlerOmniFacesには、FullAjaxExceptionHandler標準のサーブレット API エラー ページ メカニズムを利用するものがあります。

応答がコミットされている間の例外は、応答の一部が既にクライアントに送信されているため、処理できません。で次のコンテキスト パラメータを使用して応答バッファ サイズを増やすことによってのみ回避できますweb.xml

<context-param>
    <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
    <param-value>65535</param-value>    
</context-param>

上記の例では、64KB に設定されています。これは、最大のページのサイズとほぼ同じである必要があります。この方法では、サイズが 64KB に達するか終了するまで、応答はコミットされません。このようにして、コンテナーは、例外が発生したときにエラー ページへの応答を変更できます。


具体的な問題とは関係ありませんが、エラーページの構成に重複があります。例外は暗黙的に常にステータス 500 であり、同じエラー ページを指しています。したがって、エラー ページ 1java.lang.Exceptionは不要です。

于 2012-05-10T13:38:49.423 に答える