Как передать данные модели между состоянием представления и состоянием действия в Spring Web Flow 2
-
03-07-2019 - |
Вопрос
В приведенном ниже веб-потоке я связываю данные формы с переменной потока (lifeCycleForm) для события отправки в состоянии просмотра. Я убедился, что свойства name, label и description заполнены, как и ожидалось.
Однако, когда выражение в состоянии действия оценивается, все три свойства равны нулю. Мой компонент формы сериализуем, и я просто использую простые строковые свойства.
Что я делаю не так?
Я довольно новичок в 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 не имитируют отправку формы. Р>
Заранее спасибо, Brian
Решение
К большому огорчению, я также недавно узнал, что макеты тестирования Webflow не используют привязку Spring. Вы пытались запустить поток с помощью отладки в контейнере, таком как Tomcat, из среды IDE, такой как Eclipse? Если нет, это будет очень полезно. Если вам нужна помощь, я могу дать дополнительные советы, но для начала я бы сказал, скачайте плагины Eclipse Web Standard Tools и Web Tools Project, если вы этого еще не сделали.
В качестве примечания, если вы действительно хотите иметь возможность связывания с модульным тестом, вы также можете использовать FormActions Spring Webflow 1 для привязки к объекту модели, даже если это сделает ваш поток немного более многословным. р>