使用Spring WebFlow Flow处理全局异常

时间:2013-01-30 13:14:48

标签: java spring spring-mvc spring-webflow

使用Spring WebFlow Flow处理全局异常。

我正在Spring webflow项目中工作,我想知道是否有人知道如何在流中添加某种类型的全局异常处理,所以如果我的任何java调用抛出一个示例它将会进入并引入整个系统的错误系统相同?

我的旧流程解决了一个问题:

<var name="member" class="xxxx" />
<decision-state id="checkIsInPending">
   <if test="flowControllerActions.isInPending(member)" then="endStateMemberPending" else="name" />
</decision-state>

一旦我将全局添加到其中,我就开始出错了。

<var name="member" class="xxxxx" />

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


    <decision-state id="checkIsInPending">
        <if test="flowControllerActions.isInPending(member)" then="endStateMemberPending" else="name" />
    </decision-state>

这是我的错误:

org.xml.sax.SAXParseException; lineNumber: 29; columnNumber: 40; cvc-complex-type.2.4.a: Invalid content was found starting with element 'decision-state'. One of '{"http://www.springframework.org/schema/webflow":on-end, "http://www.springframework.org/schema/webflow":output, "http://www.springframework.org/schema/webflow":exception-handler, "http://www.springframework.org/schema/webflow":bean-import}' is expected.

2 个答案:

答案 0 :(得分:1)

您可以使用global-transitions来捕获异常:

<global-transitions>
    <transition on-exception="example.MyBusinessException" to="state3"/>
</global-transitions>

有关详细信息,请参阅:the documentation

答案 1 :(得分:1)

尝试重新排列XML标记。您收到此异常是因为您的流XML不符合XSD。 Myabe最终将全球转型放在了最后