Как передать данные модели между состоянием представления и состоянием действия в Spring Web Flow 2

StackOverflow https://stackoverflow.com/questions/227532

  •  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 для привязки к объекту модели, даже если это сделает ваш поток немного более многословным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top