Spring Webフローガイド
1概要
Spring Web FlowはSpring MVC上に構築されており、Webアプリケーション内にフローを実装することができます。プロセスやビジネスロジックを通じてユーザーを導く一連のステップを作成するために使用されます。
このクイックチュートリアルでは、
ユーザーアクティベーションフローの簡単な例
について説明します。ユーザーにページが表示され、続行するには[アクティブ化]ボタンをクリックし、アクティブ化をキャンセルするには[キャンセル]ボタンをクリックします。
ここでの仮定は、すでにセットアップ済みのSpring MVC Webアプリケーションがあるということではありません。
2セットアップ
Spring Web Flow依存関係を
pom.xml
に追加することから始めましょう:
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-webflow</artifactId>
<version>2.5.0.RELEASE</version>
</dependency>
Spring Web Flowの最新バージョンはhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.springframework.webflow%22%20AND%20a%3A%22springにあります。 -webflow%22[Central Mavenリポジトリ]。
3フローを作成する
それでは単純なフローを作成しましょう。前述したように、フローはプロセスを通してユーザーをガイドする一連のステップです。 ** 現在のところ、これはXMLベースの設定を使用してのみ実行できます。
-
フローの各ステップは
state ** .と呼ばれます。
この簡単な例では、
view-state
を使用します。
view-state
は、一致するビューをレンダリングするフロー内のステップです。
view-state
はアプリ内のページ(
WEB-INF/view)を参照し、
view-state__のIDは参照するページの名前です。
また、
transition
要素も使用します。
transition
要素は、特定の
state
内で発生するイベントを処理するために使用されます。
このフロー例では、3つの
view-states
–
activation
、
success
、および
failure
を設定します。
この流れのためのプロセスはかなり簡単です。出発点は
activation
ビューです。
activate
イベントが発生すると、
success
ビューに遷移します。
cancel
イベントが発生すると、
failure
ビューに遷移するはずです。
transition
要素は、__view-stateで発生するボタンクリックイベントを処理します。
<view-state id="activation">
<transition on="activate" to="success"/>
<transition on="cancel" to="failure"/>
</view-state>
<view-state id="success"/>
<view-state id="failure"/>
最初のアクティベーションページは、ID
activation
で参照され、
WEB-INF/view/activation.jsp
にあります。2つのボタン
activate
と
cancel
がある単純なページです。ボタンをクリックしてトランジションをトリガーすると、ユーザーは成功
view-state
(
WEB-INF/view/success.jsp
)または失敗
view-state
(__WEB-INF/view/failure.jsp)のどちらかに送信されます。
<body>
<h2>Click to activate account</h2>
<form method="post" action="${flowExecutionUrl}">
<input type="submit" name="__eventId__activate" value="activate"/>
<input type="submit" name="__eventId__cancel" value="cancel"/>
</form>
</body>
現在のフロー実行
view-state
のコンテキスト相対URIにアクセスするために
flowExecutionUrl
を使用しています。
** 4フローの設定
次に、Spring Web FlowをWeb環境に構成します。これを行うには、Flow RegistryとFlow Builder Serviceを設定します。
Flow Registryを使用すると、フローの場所を指定したり、Flow Builder Serviceが使用されている場合はそれを指定したりできます。
Flow Builderサービスは、フローの構築に使用されるサービスと設定をカスタマイズするのに役立ちます。
私たちがカスタマイズできるサービスの一つは
view-factory-creator
です。
view-factory-creator
を使用すると、Spring Web Flowで使用される
ViewFactoryCreator
をカスタマイズできます。 Spring MVCを使用しているので、Spring MVC設定でビューリゾルバを使用するようにSpring Web Flowを設定できます。
この例でSpring Web Flowを構成する方法は次のとおりです。
@Configuration
public class WebFlowConfig extends AbstractFlowConfiguration {
@Autowired
private WebMvcConfig webMvcConfig;
@Bean
public FlowDefinitionRegistry flowRegistry() {
return getFlowDefinitionRegistryBuilder(flowBuilderServices())
.addFlowLocation("/WEB-INF/flows/activation-flow.xml", "activationFlow")
.build();
}
@Bean
public FlowExecutor flowExecutor() {
return getFlowExecutorBuilder(flowRegistry()).build();
}
@Bean
public FlowBuilderServices flowBuilderServices() {
return getFlowBuilderServicesBuilder()
.setViewFactoryCreator(mvcViewFactoryCreator())
.setDevelopmentMode(true).build();
}
@Bean
public MvcViewFactoryCreator mvcViewFactoryCreator() {
MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
factoryCreator.setViewResolvers(
Collections.singletonList(this.webMvcConfig.viewResolver()));
factoryCreator.setUseSpringBeanBinding(true);
return factoryCreator;
}
}
その設定にXMLを使用することもできます。
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property name="flowRegistry" ref="activationFlowRegistry"/>
</bean>
<flow:flow-builder-services id="flowBuilderServices"
view-factory-creator="mvcViewFactoryCreator"/>
<bean id="mvcViewFactoryCreator"
class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="jspViewResolver"/>
</bean>
<flow:flow-registry id="activationFlowRegistry"
flow-builder-services="flowBuilderServices">
<flow:flow-location id="activationFlow" path="/WEB-INF/flows/activation-flow.xml"/>
</flow:flow-registry>
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property name="flowExecutor" ref="activationFlowExecutor"/>
</bean>
<flow:flow-executor id="activationFlowExecutor"
flow-registry="activationFlowRegistry"/>
5フローをナビゲートする
フローをナビゲートするには、Webアプリケーションを起動してhttp://localhost:8080/%7Bコンテキストパス%7D/activationFlowに移動します。アプリを起動するには、https://www.baeldung.com/tomcat-deploy-war[Tomcat]またはhttps://www.baeldung.com/deploy-to-jetty[]のようなアプリケーションサーバーにアプリをデプロイします。桟橋]。
これにより、フローの最初のページ、つまりフロー設定で指定された
activation
ページに移動します。
リンク:/uploads/activate-account-1.png%20719w[]
成功ページを表示するには、
activate
ボタンをクリックしてください。
/uploads/activation-successful-1-1.png%20717w
または
cancel
ボタンを押して失敗ページに進みます。
6. 結論
この記事では、Spring Web Flowの使用方法のガイドとして簡単な例を使用しました。
これに関する完全なソースコードとすべてのコードスニペットを見つけることができます。
記事
https://github.com/eugenp/tutorials/tree/master/spring-mvc-webflow
[over
GitHubで。