嗨,我正在使用带有spring4.1.3的spring webflow2.4.4。 我试图在两个流之间传递值,如下所示。 从flow first xml发送值
<action-state id="submit">
<evaluate expression="someMethod(form)" result="flowScope.saveStatus" />
<set name="flowScope.value1" value="form.value1" />
<set name="flowScope.value2" value="form.value2" />
<transition on="success" to="view" />
</action-state>
<subflow-state id="view" subflow="flow/path/view">
<input name="value1" value="value1" />
<input name="value2" value="value2" />
...
</subflow-state>
在流第二视图xml
中搜索数据<input name="value1" type="string" />
<input name="value2" type="string" />
现在在视图xml中我能够获得&#34; value1&#34;的值我从第一次流程中获得了什么,但却获得了“价值2”和“价值”的价值。是空的。
我尝试在第一个流程中切换位置,如下所示
<action-state id="submit">
<evaluate expression="someMethod(form)" result="flowScope.saveStatus" />
<set name="flowScope.value2" value="form.value2" />
<set name="flowScope.value1" value="form.value1" />
<transition on="success" to="view" />
</action-state>
<subflow-state id="view" subflow="flow/path/view">
<input name="value2" value="value2" />
<input name="value1" value="value1" />
...
</subflow-state>
现在我能够看到&#39; value2&#39;但价值为&#39; value1&#39;接收为空。
这里有什么问题?请参阅下面的示例
的调试日志第一次试用
DEBUG SubflowState - 调用子流&#39; flow / path / view&#39;输入地图[&#39; value1&#39; - &GT; &#39; ABCDF&#39;,&#39; value2&#39; - &GT; [空]]
第二次审判
DEBUG SubflowState - 调用子流&#39; flow / path / view&#39;输入地图[&#39; value2&#39; - &GT; &#39; ABCDF&#39;,&#39; value1&#39; - &GT; [空]]
我想将两个值传递给第二个流但第二个参数却以某种方式被跳过。
答案 0 :(得分:2)
这是一个非常常见的错误。动作状态在成功时转换并停止评估其余命令。
您需要使用<on-entry>
来分隔两者:
请改用
<action-state id="submit">
<on-entry>
<set name="flowScope.value2" value="form.value2" />
<set name="flowScope.value1" value="form.value1" />
</on-entry>
<evaluate expression="someMethod(form)" result="flowScope.saveStatus" />
<transition on="success" to="view" />
</action-state>
答案 1 :(得分:2)
感谢rptmat57,下面的代码对我有用。
<action-state id="submit">
<evaluate expression="someMethod(form)" result="flowScope.saveStatus" />
<transition on="success" to="view" >
<set name="flowScope.value2" value="form.value2" />
<set name="flowScope.value1" value="form.value1" />
</transition>
</action-state>