1

我在 spring web-flow 2 中编写了如下流程。但是我收到错误作为无效内容

<on-entry>
<decision-state="check">
<if test="some condition" then="x state" else="y state"/>
</decision-state>
</on-entry>

<view-state id="x state">
<evaluate expression="...."/>
</view-state>

在进入状态下是否可以使用 if 标记?我们可以在进入时使用决策状态吗?

如果条件为真,我必须评估<on-entry>状态中的方法。否则,它不应该在<on-entry>状态下评估。

4

2 回答 2

7

首先,<on-entry>仅在状态内部才有意义。
其次,您不能在<on-entry>

你应该做的只是定义你的decision-state和 webflow 将自动使用它作为入口点。

<decision-state id="check">
    <if test="some condition" then="xState" else="yState"/>
</decision-state>

<view-state id="xState">
    <evaluate expression="...."/>
</view-state>

<view-state id="yState">
    <evaluate expression="...."/>
</view-state>

让我们看看这个流程,入口点显然是check,这是您的决策状态,因为x statey state都被它调用。

所以你的流程图是

             x状态
          /
检查
          \
             y状态

,因为没有别的办法。我想这是你想要的行为

[编辑] 这是一个具有 2 个动作状态的示例:

<decision-state id="check">
    <if test="some condition" then="xState" else="yState"/>
</decision-state>

<action-state id="xState">
    <evaluate expression="expr1"/>
    <transition on="success" to="zState"/>
</action-state>

<action-state id="ySate">
    <evaluate expression="expr2"/>
    <transition on="success" to="zState"/>
</action-state>

<view-state id="zState">
</view-state>


              x action-state
          / (evaluate expr1) \
check view-state
          \ /
              y action-state
            (evaluate expr2)    

于 2012-12-18T18:34:47.860 回答
2

是的,如果条件 x = y 使用 lambda?“真结果”:“假结果”

    <view-state id="viewId">
        <on-entry>
            <evaluate expression="flowScope.varx == x ? Bean.dosomethingX() : Bean.somethingY()" result="flowScope.varResult" />
        </on-entry>
    </view-state>

或开始

        <on-start>
            <evaluate expression="flowScope.varx == x ? Bean.somethingX(): Bean.somethingY() " result="flowScope.varResult" />
        </on-start>
于 2016-03-04T16:42:25.503 回答