【问题标题】:Webflow On-Render/On-Entry Exception Still Runs On-Exit MethodsWebflow On-Render/On-Entry 异常仍然运行退出方法
【发布时间】:2016-12-24 12:08:50
【问题描述】:

我在流程定义中定义了以下内容:

<view-state id="switchboard" view="switchboard2" model="reservationForm">
    <on-entry>
        <evaluate expression="flowController.enterSwitchboard(flowRequestContext)" />
        <evaluate expression="flowController.populateActionFlags(flowRequestContext)" />
    </on-entry>
    <transition on="prev" to="switchboardAction" validate="false" />
    <transition on="*" to="switchboardAction" />
    <transition on-exception="java.lang.Exception" to="systemErrorView" />
    <on-exit>
        <evaluate expression="flowController.exitSwitchboard(flowRequestContext)" />
        <evaluate expression="flowController.clearWebflowForms(flowRequestContext)" />
    </on-exit>
</view-state>

发生的情况是 populateActionFlags() 方法中的错误(在此特定情况下为 IllegalArgumentException,但也可能是其他异常)正在发生,但 exitSwitchboard() 方法仍在触发。在此之后, clearWebflowForms() 方法抛出异常,因为模型由于先前的异常而被搞砸了。这会导致无限循环。

我需要的是:当发生异常时,绕过退出方法并进入一个节中定义的错误状态(“systemErrorView”)。不要过关,不要收 200 美元。

Webflow 版本是 2.4.1。

有人可以帮忙吗?

杰森

【问题讨论】:

    标签: spring-webflow spring-webflow-2


    【解决方案1】:

    尝试在您的流程中使用全局转换:

    <global-transitions>
        <transition on-exception="java.lang.Exception" to="systemErrorView"/>
    </global-transitions>
    

    请记住,这将由您的流程的所有状态共享。

    如果您不希望它被共享,您可能需要为此创建一个自定义例外。

    【讨论】:

    • 试过了,没有运气。
    • 你也可以试试 看看你有没有得到什么
    【解决方案2】:

    on-exit 将在有意图的视图状态结束时执行。声明它的含义与 java 中的 finally 块相同。

    在你的情况下,你可能想要这样做

    <transition on="prev" to="switchboardAction" validate="false" >
        <evaluate expression="flowController.exitSwitchboard(flowRequestContext)" />
        <evaluate expression="flowController.clearWebflowForms(flowRequestContext)
    </transition>
    <transition on="*" to="switchboardAction" >
        <evaluate expression="flowController.exitSwitchboard(flowRequestContext)" />
        <evaluate expression="flowController.clearWebflowForms(flowRequestContext)
    </transition>
    

    这会在每次转换时执行评估语句,但不会在异常时执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多