0

ConversationScoped Bean を ViewScoped Bean に注入することはできません。 ConversationScoped Bean が ViewScoped Bean よりも寿命が短いか、またはその逆になる可能性があるためです。

この制限を克服するために、f:event を使用して preRenderView リスナーとしてインジェクションを実行しようとしました。

<f:metadata>
   <f:event type="preRenderView" listener="#{taskController.initializeTask(workPackageConversation.workPackage)}" />
</f:metadata>

ただし、リスナーのinitializeTaskもゲッターのgetWorkPackageも呼び出されていません。

FacesContext を使用してマネージド Bean を別のマネージド Bean からルックアップできることはわかっていますが、なぜこれが機能しないのか興味があります。別のビューからビューに移動するときに f:event リスナーが呼び出されないためですか? すなわち。リダイレクトまたはダイレクト ページ ビューなしで?

Seam 3 Faces の s:viewAction タグも試しましたが、うまくいきませんでした。どちらも呼び出されません。

前もって感謝します。

4

1 に答える 1

0

とにかく、通常のスコープのBeanへのプロキシを常に持っているので、生涯の問題は発生しないと思います。会話がアクティブなときに会話スコープの Bean を逆参照するか、アクティブでないときに逆参照しますが、常に適切な会話が得られます。

于 2011-01-22T03:11:35.527 に答える