Как передать данные модели между состоянием представления и состоянием действия в Spring Web Flow 2 - PullRequest
3 голосов
/ 23 октября 2008

В веб-потоке ниже я связываю данные формы с переменной потока (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

1 Ответ

1 голос
/ 20 марта 2009

К большому огорчению, я также недавно обнаружил, что макеты тестирования Webflow не используют привязку Spring. Вы пытались запустить поток с помощью отладки в контейнере, таком как Tomcat, из среды IDE, такой как Eclipse? Если нет, это будет очень полезно. Если вам нужна помощь, я могу дать дополнительные советы, но для начала я бы сказал, скачайте плагины Eclipse Web Standard Tools и Web Tools Project, если вы этого еще не сделали.

В качестве дополнительного примечания: если вы действительно хотите иметь возможность связывания с модульным тестом, вы также можете использовать FormActions Spring Webflow 1 для привязки к объекту модели, даже если это сделает ваш поток несколько более многословным. 1003 *

...