2008-10-22 3 views
3

В приведенном ниже веб-потоке я привязываю данные формы к переменной потока (lifeCycleForm) в событии отправки в состоянии представления. Я проверил, что свойства имени, метки и описания заполнены, как ожидалось.Как передать данные модели из состояния представления и состояния действия в Spring Web Flow 2

Однако, когда выражение в состоянии действия оценивается, все три свойства равны нулю. Моя форма 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" /> 

Update: я забыл упомянуть в моей первоначальной публикации, что это был мой юнит-тесты, которые потерпели неудачу. С тех пор я узнал, что AbstractFlowExecutionTests не реализует привязку параметров запроса. Мне это кажется немного недосмотром. Я пробовал последнюю ночную Spring WebFlow 2.0.4, и поведение остается прежним.

Обновление: Мои проблемы в том, что Spring WebFlow mocks не моделируют подачу формы.

Заранее спасибо, Brian

+0

Мое единственное предложение - передать LifeCycleForm в lifeCycleService как полный объект (а не по частям) и посмотреть, как он выглядит в этом методе с помощью отладки ... Я не вижу ничего плохого с вашим потоком , но я использовал только Webflow 1.0 :( – MetroidFan2002 2008-10-23 01:32:28

ответ

1

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

Как и в случае примечания, если вы действительно хотите иметь возможность привязки к тестированию на единицу, вы также можете использовать SpringApplication 1 FormActions для привязки к объекту модели, хотя это сделает ваш поток немного более подробным.