0

ViewScope の JSF マネージド Bean への EJB の注入に関する議論をかなり見てきました。そうすることは容認できる慣行のようです。

アプリケーションの Bean の 1 つを RequestScoped から ViewScoped に変更して、必要な機能を追加しようとしています。

EJB クラスを変更して、すべてがシリアライズ可能であることを確認しました。JSF Bean が作成されると、最初は EJB にアクセスできます。ただし、ユーザー アクションが EJB メソッドを呼び出そうとする Bean 内のメソッドを起動すると、NullPointerException がスローされます。

Bean を ViewScoped から RequestScoped に戻すとすぐに、すべて正常に動作します。

これは、使用されている JSF の実装に問題があるのでしょうか? このアプリケーションは MyFaces 2.1.12 を使用しており、Websphere 7.0 で実行されます。

ありがとう。

4

1 に答える 1

1

フレームワークとしての CDI 自体は、ビューについて何も知りません。したがって、Bean に注入しても機能し@ViewScopedません。

これは、JSF と CDI を一緒に使用することの主な欠点の 1 つです。しかし、この問題に遭遇したのはあなたが初めてではありません。

JSF 2.1 実装に行き詰まっている場合は、Apache CODISeam 3などのフレームワークが CDI を何らかの方法で拡張し@Inject@ViewScopedBean でも拡張できます。

JSF 2.2 にアップグレードできる場合 (これを行うことをお勧めします)、この CDI 拡張機能は JSF 実装のネイティブ部分となり、苦労せずに両方を一緒に使用できます。この説明を参照してください。

于 2013-10-18T18:44:32.473 に答える