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

Spring webflow Value of second parameter is not passed to subflow

您好,我正在使用 spring webflow2.4.4 和 spring4.1.3。 我正在尝试在两个流程之间传递值,如下所示。 首先从流发送值 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 我能够接收到 "value1" 我从第一个流中传递的值,但获取 'value2' 的值是空的。

我试过如下在第一个流程中切换位置

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

现在我可以看到 'value2' 的值,但是 'value1' 接收的值是空的。

这里有什么问题?请参阅下面两个示例的调试日志

一审

DEBUG SubflowState - 使用输入映射调用子流 'flow/path/view'['value1' -> 'ABCDF', 'value2' -> [null]]

二审

DEBUG SubflowState - 使用输入映射调用子流 'flow/path/view'['value2' -> 'ABCDF', 'value1' -> [null]]

我想将这两个值都传递给第二个流,但是第二个参数不知何故被跳过了。

这是一个很常见的错误。当它成功并停止评估其余命令时,操作状态正在转换。

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

  1. 您要设置或评估的命令(值 1 和值 2)
  2. 将为转换评估的命令,这里是 someMethod(form))


改用这个:

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

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