0

我有动作级别的本地异常映射和全局异常映射,其中异常类型相同 - 那么无论执行全局异常还是本地异常,哪一个将具有高优先级?

<action name="User_save" class="">
    <exception-mapping exception="java.sql.SQLException"
            result="error"/>
    <result name="error">/jsp/Error.jsp</result>
    <result>/jsp/Thanks.jsp</result>
</action>

<global-results>
    <result name="error">/jsp/Error.jsp</result>
    <result name="sqlError">/jsp/SQLError.jsp</result>
</global-results>
<global-exception-mappings>
    <exception-mapping exception="java.sql.SQLException"
            result="error"/>

4

2 回答 2

1

在声明异常映射时,拦截器会在抛出的异常和声明的异常之间找到最接近的类继承匹配。拦截器将检查适用于动作映射的所有声明的映射,首先是本地映射,然后是全局映射。如果找到匹配项,则处理 Result,就像它已由 Action 返回一样。

此过程遵循与从 Action 返回的 Result 相同的规则。它首先在本地操作映射中查找 Result,如果未找到,则查找全局 Result。

于 2012-05-15T07:11:21.743 回答
0

从您的操作中抛出一个 SQLException,您就会得到答案。

或阅读文档,其中说:

拦截器将检查所有适用于动作映射的声明映射,首先是本地映射,然后是全局映射

于 2012-05-15T07:14:39.667 回答