3

私は JSF を初めて使用し、問題に苦しんでいます。誰かが私を助けてくれることを願っています。

問題:

  • Bean ではないハンドラーが、TCP/IP パイプからのメッセージを検出します。
  • FacesMessageハンドラーは、メッセージ ボックスにメッセージを表示するために、新しい を作成する必要があります。
  • ハンドラーは Bean ではないため、 をFacesContext返しますnull。したがって、ハンドラーはFacesMessage.

質問:

  1. 私がやろうとしていることを何とかすることは可能ですか?
  2. FacesMessageUI に表示されるように、Bean ではない Java クラスから外部メッセージを伝播する最良の方法は何ですか?

これを解決する方法についてのアイデアはありますか?

4

2 に答える 2

3

FacesContext.getCurrentInstance() メソッドは、実際の Faces セッションにいる場合にのみ、有効な Faces コンテキストを返します。TCP/IP メッセージ処理を行うクラスが、faces マネージド Bean がメッセージに関する情報をフロントエンドに取得する手段を提供し、そのメソッドに管理された Bean。

使用しているアプリケーション サーバーのタイプによっては、EJB セッション Bean を介して対話するようにこのすべてを設定する必要がある場合があります。しかし実際には、バッキング Bean や Faces のロジックは、UI に関係のないロジックから完全に分離する必要があります。

JEE6 準拠のアプリケーション サーバー (Glassfish など) を使用している場合は、一連のメッセージを保持する @Singleton EJB を設定し (同時実行をサポートするデータ構造を使用してください)、JCA ソケット (http:/ /code.google.com/p/jca-sockets/) を使用してソケット通信を処理します。

于 2012-06-19T19:12:32.057 に答える
1

いいえ、できません。別の方法として、@ManagedBeanアノテーションを使用するか、faces-config.xml に次のようにエントリを作成して、バッキング Bean を作成します。

  <managed-bean>
    <managed-bean-name>bean</managed-bean-name>
    <managed-bean-class>com.test.bean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

facesContext両方を取得して作成できるようになりましFacesMessageた。これがお役に立てば幸いです。

于 2012-06-19T19:07:29.737 に答える