是否可以在spring webflow </on-entry>中的<on-entry>状态中使用if标记

时间:2012-12-17 18:16:12

标签: java spring spring-webflow-2

我已在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>

是否有任何替代方法可以在入境时使用标签? 我们可以在入境时使用决策状态吗?

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

2 个答案:

答案 0 :(得分:7)

首先,<on-entry>只在一个州内有意义 第二,您无法在<on-entry>

中定义状态

您应该做的只是定义您的decision-state,并且网络流将自动将其用作切入点。

<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动作状态
/(评估expr1)\
检查视图状态
\ /
y action-state
(评估expr2)

答案 1 :(得分:1)

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

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