少し背景: 既存の Spring Webflow を ajax 化して、ページを (別の URL の) 「ライトボックス」に表示して、ユーザーが完全なフローと同様の方法でフローを操作できるようにします。既存のページ。
通常の登録フォームは次の場所にあります。
http://localhost:8080/csso/customer/registration?execution=e1s1.
(csso はアプリケーション名)
Spring Webflow の Webflow の ID は /customer/registration です。
<flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
<flow-location id="customer/registration" path="/WEB-INF/views/customer/registration/registration-flow.xml"/>
</flow-registry>
登録フロー.xml
<view-state id="create" model="customer" view="customer/registration/create">
<on-render>
<evaluate expression="customer.setAcceptTermsAndConditions(false)"/>
</on-render>
<transition on="submit" to="confirm" />
<transition on="cancel" to="cancel" bind="false" />
</view-state>
ここでの問題は、このページに 2 つの異なる方法でアクセスする必要があることです。
- 直接。これは現在動作します。
- フォームの流れが中断されないように、別の JSP ページ (コントローラー /tabEntry でアクセスされる tabEntry.jsp) にインクルードします。
送信のクリックが同じフローを通過するように、/customer/registration を tabEntry 内に含めるにはどうすればよいですか?
直面した問題:
/customer/registration はコントローラではないため、jsp:include による /customer/registration のインクルードは機能しません。また、/customer/redirection への呼び出しには Webflow の実行キーを設定するリダイレクトが含まれているため、@include は機能しません。
- フォーム アクションは自動的に /tabEntry に設定されますが、フローを続行するには /customer/registation の 2 番目の状態に設定する必要があります。
技術的に叩くのではなく、喜んでデザインの変更を受け入れます。