私が見た Faces Flow の各例には、特定のフロー内でのみ使用される排他的なビューが含まれています。私がやりたいことは、複数のフローで、および/またはフローの外部で使用される可能性があるビューでほぼ完全に構成されるフローを作成することです。このビューの再利用は可能ですか、それとも Faces Flows はこのように使用されることを意図していませんでしたか?
質問する
1005 次
1 に答える
3
Faces Flow は、基本的に JSF ビューによって構成され (またはその可能性があり)、それ自体が再利用可能です。この投稿を参照する場合:
フローに関する JSF 2.2 の新機能
アプリケーションの流れは、もはやページ間の流れに限定されず、代わりに「ノード」間の流れとして定義されます。ノードには 5 つの異なるタイプがあります。
View : アプリケーション内の任意の JSF ページ
メソッド呼び出し: EL を介してフロー グラフからアプリケーション ロジックを呼び出す
Switch : ブール値 EL に基づくフロー グラフでのナビゲーションの決定
Flow Call : パラメータを指定して別のフローを呼び出し、戻り値を受け取る
Flow Return : 呼び出しフローに戻る
最初のポイント自体があなたの質問に答えます!
OPから編集(@jdessey)
テストで受け入れられた回答を確認したので、実装時にいくつかの注意事項を共有したいと思いました。
Programmatic flow definition (i.e. @FlowDefinition annotation) is only processed if the class that contains the annotated method is itself a normal scoped CDI bean such as `@ApplicationScoped`. (Might be a bug - I'm using JSF 2.2.4 and Weld 2.0.4)
When defining the view node using FlowBuilder.viewNode(String viewNodeId, String vdlDocumentId), the document id must be the absolute path to the .xhtml file. This is in the javadoc but not intuitive IMO because since 2.0 we are used to implicit navigation.
コード:
@ApplicationScoped
public class MyFlow implements Serializable {
@Produces @FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
flowBuilder.id("", "myFlow");
flowBuilder.viewNode("anyView", "/absolutePathToView.xhtml").markAsStartNode();
return flowBuilder.getFlow();
}
}
このフローに移動するには、次のような暗黙的なナビゲーション ケースとして "myFlow" を使用します。
<p:menuitem value="Begin Flow" action="myFlow" />
于 2013-10-15T11:30:10.037 に答える