我有一个网络流,我需要在其中一个屏幕上捕获数据。
此数据存储在一个对象中,该对象将保存在 bean 的列表中。
在提交页面时,我希望能够创建一个对象,并将其添加到 bean 中的列表中。
这可能吗?
谢谢
我有一个网络流,我需要在其中一个屏幕上捕获数据。
此数据存储在一个对象中,该对象将保存在 bean 的列表中。
在提交页面时,我希望能够创建一个对象,并将其添加到 bean 中的列表中。
这可能吗?
谢谢
你需要做几件事:
将一个对象放入流范围内(或在现有对象上添加一个额外的字段,例如您的表单),为您要编辑的对象提供一个固定的绑定路径。如果不这样做,就无法利用 Spring 的数据绑定。
在您的 FormAction 上编写一个方法以将此对象放入您的列表中,并将此方法设置为在您提交当前页面时跟随的转换上运行。该方法可以根据需要清理(1)中使用的flowscope级资源。
编辑Webflow 文档有很好的例子说明如何对转换执行操作。对于 Webflow 版本 2,请查看Executing view transitions和Executing actions。对于版本 1,请参阅流定义。
最后,我设法让它与以下流程一起工作。
我创建了一个辅助 bean 来保存一个函数,用于添加到表单 bean 中保存的列表中。
<view-state id="page2" view="page2">
<transition on="save" to="addToList">
<action bean="form" method="bindAndValidate"/>
</transition>
<transition on="back" to="page1">
<action bean="formAction" method="bindAndValidate"/>
</transition>
<transition on="next" to="page3">
<action bean="formAction" method="bindAndValidate"/>
</transition>
</view-state>
<action-state id="addToList">
<bean-action bean="helperbean" method="addToList">
<method-arguments>
<argument expression="conversationScope.form"/>
</method-arguments>
</bean-action>
<transition on="success" to="page2"/>
</action-state>
然后它再次显示原始页面
我会将 Bean(和列表)存储在 Session 中。