这个Spring Webflow动作状态如何执行?

时间:2019-11-07 02:27:33

标签: spring spring-webflow

我看到了这样的弹簧幅流。如您所见,有两个视图状态,并且这两个状态都将由该流外部的链接调用。但是我不知道为什么每次激活此流程时都会始终调用操作状态。我个人认为应该有一个进入标签。有什么想法吗?感谢您的帮助。

  <?xml version="1.0" encoding="UTF-8"?>
    <flow xmlns="http://www.springframework.org/schema/webflow"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="
            http://www.springframework.org/schema/webflow
            http://www.springframework.org/schema/webflow/spring-webflow.xsd">

        <action-state id="start">
            <evaluate expression="aaa.fsdf()"/>
            <evaluate expression="aaa.bbb()"/>
            <transition on="yes" to="viewone"/>
            <transition on="no" to="viewtwo"/>
        </action-state>

        <view-state id="viewone" view="web/ccc">
        </view-state>

        <view-state id="viewtwo" view="web/eee">
        </view-state>


        <end-state id="final" view="web/final">
        </end-state>

    </flow>

1 个答案:

答案 0 :(得分:1)

这是Spring Webflow中流程的工作方式。参见documentation about flows

  

定义的第一个状态成为流的起点。


另外,您不能直接在流中直接调用状态。假设您的流程在名为test-flow.xml的文件中名为“ test-flow”

当您通过URL调用流时,使用yoursite.com/test-flow将输入流和流的第一状态。因此,如果要在流中调用特定的视图状态,则必须使用一些逻辑将流定向到所需的状态。 一种实现方法是传递一个参数,例如yoursite.com/test-flow?test=1,然后在您的流程中使用动作状态检查该参数并转换为适当的视图状态。

这就是这里发生的情况,流程中的操作状态是起点,并且根据某种逻辑,它将转换为您的viewoneviewtwo

希望这很有意义