Spring Web Flow 2でビューステートとアクションステート間でモデルデータを渡す方法
-
03-07-2019 - |
質問
以下のWebフローでは、ビューステートの送信イベントでフォームデータをフロー変数(lifeCycleForm)にバインドします。名前、ラベル、説明のプロパティがすべて期待どおりに入力されていることを確認しました。
ただし、アクション状態の式が評価されるとき、3つのプロパティはすべてnullです。私のフォームBeanはシリアル化可能で、単純な文字列プロパティを使用しています。
私が間違っていることは何ですか?
Spring WebFlowはかなり新しいので、明らかな何かを見落としているかもしれません。
<var name="lifeCycleForm" class="com.btmatthews.freelancer.lifecycle.portlet.LifeCycleForm" />
<view-state id="createLifeCycle" model="lifeCycleForm">
<binder>
<binding property="name" required="true" />
<binding property="label" required="true" />
<binding property="description" required="false" />
</binder>
<transition on="submit" to="createLifeCycleAction" />
<transition on="cancel" to="lifeCycleCreationCancelled" bind="false" />
</view-state>
<action-state id="createLifeCycleAction">
<evaluate expression="lifeCycleService.createLifeCycle(lifeCycleForm.name, lifeCycleForm.label, lifeCycleForm.description, null, null)" />
<transition on="success" to="lifeCycleCreated" />
<transition on="failure" to="createLifeCycle" />
</action-state>
<end-state id="lifeCycleCreated" />
<end-state id="lifeCycleCreationCancelled" />
更新:元の投稿で、失敗したのは自分の単体テストであると言及するのを怠りました。それ以来、AbstractFlowExecutionTestsはリクエストパラメータのバインディングを実装しないことを学びました。これは私にとって少し見落としているようです。毎晩最新のSpring WebFlow 2.0.4を試しましたが、動作は同じままです。
更新:私の問題は、Spring WebFlowモックがフォーム送信をシミュレートしないことです。
事前に感謝します、 ブライアン
解決
非常に残念なことに、私は最近、WebflowテストモックがSpringのバインディングを使用しないことも発見しました。 EclipseのようなIDE内からTomcatのようなコンテナでデバッグを使用してフローを実行しようとしましたか?そうでない場合は、非常に便利です。ヘルプが必要な場合は、さらにヒントを提供できますが、開始するには、Eclipse Web標準ツールとWebツールプロジェクトプラグインをまだダウンロードしていない場合はダウンロードしてください。
補足として、バインディングを単体テストできるようにしたい場合は、Spring Webflow 1 FormActionsを使用して、モデルオブジェクトにバインドすることもできますが、フローが少し冗長になります。