私はこの理想主義を達成したいと思います:
- SpringまたはWeldのみを使用し、両方は使用しないように、JSFBeanコンテナーの実装を1つだけにする。現在、バックエンドにSpringを使用しているので、Springが好きです。
- アノテーションを1つだけ持つには、@ ManagedBean、@ Named、@Modelから選択します
- @ RequestScoped、@ SessionScoped、@ ViewScoped、@ FlashScoped、おそらく@ConversationScopedなど、サポートされているすべてのスコープを使用できるようにするには
- JSF Beansには、おそらく@Injectまたは@Autowiredを使用して、Spring-Managed-Services(バックエンドサービス)を注入できます。
これまでのところ、これらを達成するための最良の組み合わせを見つけていません。私が知る限り、間違っている場合は訂正してください。
- @ManagedBeanはスプリングサービスで注入できませんか?
- @Namedは@Injectを使用してSpringサービスを注入できますが、@NamedはWeldを使用しています。Weldの代わりにSpringを使用して@Namedを管理できますか?
- @Namedは@ViewScopedとFlashScopeをサポートしていませんか?
あなたの考えや経験を共有してください。
ありがとうございました :-)
2011年3月15日更新
JSR299CDI実装としてJbossWeldをSpringに置き換える方法を説明する興味深いページを見つけました。つまり、基本的に、質問番号2に回答します。スプリングサービスを注入できるようになったので、1番も間接的に答えられます。
しかし、それでも、3番目の質問は残っています。この記事のように、@Namedで@ViewScopedとFlashScopeを使用できると非常に役立ちます。Flashスコープの実装はまだ確認されていませんが、これまでに入手できる最も近いものはこのページです。
うまくいけば、jsr 299の実装で溶接をばねに置き換えることで、@ConversationScopedを使用できるようになります。
今すぐテストする必要があります。幸運を祈ります:-)
2011年3月18日更新
@ Named、@ Injectを実行するには、溶接の代わりにSpring3を正常に使用します。重要なことは、faces-config.xmlでel-resolverを設定することです。
AFAIK、Spring 3は現在CDIをまだサポートしていないため、bye2@ConversationScoped。
スコープについては、@ Scope( "request")または@Scope( "session")を使用する必要がありますが、@ RequestScoped(javax.enterprise.context.RequestScoped)および@SessionScopedを使用する場合は、この記事から提供されるブリッジ。
この記事の春のScope( "view")は魔法のように機能します:-)
ただし、1つの問題が残っています。Scope( "view")-beans間でオブジェクトを渡す方法..幸運を祈ります!
アップデート
ああ..ついに完了..JSF2が提供するFlashを使用して変数を渡すことは、実際には魔法のように機能します。そのためにサードパーティの実装は必要ありません。
つまり、基本的には溶接なしで実行できますが、スプリングを使用すると、ビュースコープを含む一般的なスコープを使用して、ダンはフラッシュオブジェクトを使用してBean間を通過できます。
欠けているのは会話の範囲ですが、これはまだ私にとって大きな問題ではありません。うまくいけば、将来の春はこの会話の範囲をサポートすることができます。
乾杯 :-)