0

Injectの代わりに使い始めていますManagedProperty。いくつかのテストを行いましたが、そのうちの 1 つで、ViewScopedBean ( ) を同じスコープを持つBean1別の ( )に注入します。Bean2

@Inject
private Bean1 bean1;

Bean1 にはitemアーティストを表す変数があり、アーティストには、名前、アルバムのリストなど、さまざまなフィールドがあります。

Bean2 では、Bean1 のアイテムにアクセスする必要があります。

Artist artist = bean1.getItem();

その行にブレークポイントを設定して内容をBean1確認すると、変数が表示されますitemが、展開するitemとフィールドが設定されません。

getItem()デバッガーでメソッドにステップ インしようとすると、次のメッセージが表示されます。

Thread http-listener-1(2) stopped at beans.Bean1$Proxy$_$$_WeldClientProxy.getItem - compiled without debug info.

デバッガーで 1 行下に移動してartist変数を確認すると、すべてのフィールドが正しい値に設定されています。それはどうしてですか?すべてがnullになる前に。

Edit1 : に置き換えInject、からにManagedProperty変更し、デバッグに関して同じ手順を実行すると、 のフィールドが設定されていることがわかります。メソッドにステップインすることもできます。javax.faces.view.ViewScopedjavax.faces.bean.ViewScopeditemgetItem()

4

1 に答える 1

0

@ManagedPropertyからに切り替えると、パッケージ@Inject内のすべての注釈も忘れることが期待できます。javax.faces.bean.*その理由は、JSF 独自の依存性注入メカニズムと CDI を混在させることができないためです。そうしないと、予期しない動作が発生します。

于 2013-09-11T17:59:05.103 に答える