2012-01-19 14 views
1

をナビゲートすることができない私は、私の例外処理のためのアイデアをよ...JSFのMyFacesの例外処理が

使用:

<myfaces.version>2.0.11</myfaces.version> 
    <richfaces.version>4.1.0.Final</richfaces.version> 
    <tomahawk.version>1.1.11</tomahawk.version> 
    <weld.version>1.1.4.Final</weld.version> 
    <codi.version>1.0.3</codi.version> 

を私はエラーページに移動する簡単な例外ハンドラを差し込みます。

これで、Bean値にアクセスするときにレンダリングフェーズでエラーが発生しました。これ以上ナビゲーションを変更できないようです(バッファは既に書き込まれていますか?)。ブラウザは部分的にレンダリングされたページを単に表示します。以降のリクエストには古いウィンドウのスコープへのリンクが含まれているため、サーバー上の状態は壊れているようです。私はいつも同じエラーで実行します。

このようなケースを処理するにはどうすればよいですか?仕様の問題、MyFacesの問題または開発者の問題?

答えて

1

このようなケースを処理するにはどうすればよいですか?仕様の問題、MyFacesの問題または開発者の問題?

開発者の問題です。ゲッターメソッドの中でビジネスロジックをしないでください。代わりに、(ポスト)コンストラクタまたは(アクション)リスナメソッドで行います。

+0

この特定のレスポンスの選択が嫌い場合でも、JSFの質問の最後のインスタンスです...もう一度ありがとうございます。 – mtraut

+1

コミットされた応答は、返品のない点です。これは、使用されるWeb言語/フレームワークに関係なく行われます。厄介な回避策は、デフォルトのレスポンスバッファサイズを何か大きい値に設定することです。ほとんどの環境ではデフォルトで2KBになっています。あなたはそれを100KBまたはあなたの最大のページがどのようなサイズにでも設定することができます(そして、サーバーが十分なヒープを持っていることを確認してください)。 JSF2では、javax.faces.FACELETS_BUFFER_SIZE'コンテキスト・パラメータで設定できます。しかし、ゲッターで例外に敏感なビジネスロジックを実行することは、悪い考えです。パラメータについては、再びhttp://stackoverflow.com/questions/2090033/why-jsf-calls-getters-multiple-times/2090062#2090062 – BalusC

+0

thxを参照してください。問題は、アプリケーションを別のフレームワークから移行しており、ライフサイクルやビジネスロジックを変更することを熱望していないことです。 – mtraut