我在流程定义中定义了以下内容:
<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。
有人可以帮忙吗?
杰森
答案 0 :(得分:1)
尝试在流程中使用全局转换:
<global-transitions>
<transition on-exception="java.lang.Exception" to="systemErrorView"/>
</global-transitions>
请记住,您的所有流量状态都会共享此信息。
如果您不希望共享它,可能需要为此创建自定义例外。
答案 1 :(得分:1)
on-exit
将在具有intent的视图状态结束时执行。声明它意味着与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>
这会在每次转换时执行evaluate语句,但不会在异常时执行。