Spring webflow第二个参数的值不传递给子流

时间:2017-12-07 10:22:26

标签: spring-mvc spring-webflow

嗨,我正在使用带有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; [空]]

我想将两个值传递给第二个流但第二个参数却以某种方式被跳过。

2 个答案:

答案 0 :(得分:2)

这是一个非常常见的错误。动作状态在成功时转换并停止评估其余命令。

您需要使用<on-entry>来分隔两者:

  1. 您要设置或评估的命令(value1&amp; value2)
  2. 将为转换评估的命令,此处为someMethod(form))

  3. 请改用

    <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>