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 和值 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>
您好,我正在使用 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 和值 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>