ユーザーをログイン画面にリダイレクトするサーブレットによってアクセスされるサービスがあります。バッキング Bean のスコープは現在、@ConversationScoped から @FlowScoped に変更されています。これは、処理が容易になるためです。
暗黙のアクションや JSF フォワード/リダイレクトによる間接化なしに、サーブレット内から直接 Faces フローを初期化する方法はありますか?
@FlowScope が JSF (2.2) スコープであることは承知しており、たとえば FacesServlet などを拡張する方法があるかどうか疑問に思っていました。
回避策として、現在、ボタン付きのビューを追加しました。これにより、JSF フォワードがフロー ディレクトリに入るようになりますが、これを回避しようとしています。
更新
ボタンをクリックしなくても、フローに「自動的に」転送する多くのアプローチを試しましたが、常にNo active contexts for scope type javax.faces.flow.FlowScoped
. ここで私のアプローチ:
f:viewAction
<f:metadata> <f:viewAction action="myFlow" /> </f:metadata>
これは実行が早すぎるようです (いずれにせよ)。
f:event
<f:event type="preRenderView" listener="#{myBean.forwardToMyFlow()}" />
Bean のメソッドは、 と同じ結果を返します
f:viewAction
。ナビケース
<navigation-rule> <from-view-id>/myView.xhtml</from-view-id> <navigation-case> <from-outcome>myFlow</from-outcome> <to-view-id>/myFlow/myFlow.xhtml</to-view-id> <redirect /> <to-flow-document-id /> </navigation-case> </navigation-rule>
私は何が欠けていますか?