0

出力に基づいて facelet にいくつかの facesMessages をレンダリングするビジネス ロジック コードがあるので、このメソッドのような facelet マネージド Bean でメソッドを作成しました。

public void renderFacesMessages(String summary, String detail) {
    FacesMessage message = new FacesMessage(summary, detail);
    FacesContext.getCurrentInstance().addMessage(null, message);

}

ビジネス ロジック クラスは、必要なメッセージに従ってこのメソッドに引数を渡します。問題は、マネージド Bean でビジネス ロジックがこのメソッドを呼び出すための正しいアプローチは何かということです。

4

3 に答える 3

1

レイヤリングのコンセプトがすべてです...

ビジネスロジックを別のビジネスクラス/モジュールに委譲するメソッドを持つ ManagedBean があると思います。これが事実である場合、私はあなたに言います、ビジネス側にFacesメソッドを決して持たないでください...

代わりに、ビジネス結果をクラスにラップし、マネージド Bean に戻します。この結果クラスには、結果、エラー、例外などの結果に関するメタ情報が含まれます。したがって、マネージド Bean は renderFacesMessage メソッドを使用できます。

上記の仮定に従わなかったとしても、私の提案はビジネスコンポーネント内に JSF Faces ロジックを持たないことです。それは悪い考えです。

于 2013-06-21T03:57:36.797 に答える
1

ビジネス ロジックで JSF バッキング Bean を呼び出さないでください。

代わりに、バッキング Bean にビジネス ロジック (EJB Bean や Java EE 7 のトランザクション CDI Bean など) を呼び出させ、この呼び出しの結果 (例外、戻り値など) に応じて Faces メッセージを生成したり、新しいページなど

于 2013-06-21T08:37:03.987 に答える
0

ビジネスロジックはステートレスになるので(私はそう思う/そう願っています)、例外をキャッチすることにより、ビジネスロジックを呼び出したマネージドBeanにエラーメッセージの表示を処理させるべきだと思います.

一方、マネージド Bean をビジネス ロジック (またはマネージド Bean の単なるインターフェイス) に渡すことができるため、ビジネス ロジックはマネージド Bean をコールバックできます。しかし、私は最初のアプローチを好みます。

于 2013-06-20T07:17:45.837 に答える