【问题标题】:Spring webflow Value of second parameter is not passed to subflowSpring webflow 第二个参数的值未传递给子流
【发布时间】:2017-12-08 17:47:07
【问题描述】:

嗨,我正在使用 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”的值是 null。

我尝试如下切换第一流中的位置

<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 - 使用输入映射调用子流“流/路径/视图”['value1' -> 'ABCDF', 'value2' -> [null]]

二审

DEBUG SubflowState - 使用输入映射调用子流“流/路径/视图”['value2' -> 'ABCDF', 'value1' -> [null]]

我想将这两个值都传递给第二个流程,但它的第二个参数以某种方式被跳过。

【问题讨论】:

    标签: spring-mvc spring-webflow


    【解决方案1】:

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

    您需要使用&lt;on-entry&gt; 将两者分开:

    1. 您要设置或评估的命令(value1 和 value2)
    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>
    

    【讨论】:

    • 谢谢,但是如果 value1 和 value2 依赖于评估表达式,那么值是什么?
    • 那么你希望你的动作状态评估为“成功”吗?将你正在做的事情分成两种方法:processValues()evaluateResult() 并让第一个方法在 &lt;on-entry&gt;
    • 通常有多种使用 webflow 的方法
    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 2011-04-15
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多