在本地和全局使用异常映射具有相同的异常 - 哪个具有高优先级

时间:2012-05-15 06:58:30

标签: java struts2

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

<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"/>

2 个答案:

答案 0 :(得分:1)

当声明异常映射时,Interceptor将在抛出的Exception和声明的Exception之间找到最接近的类继承匹配。 Interceptor将检查适用于动作映射的所有声明的映射,首先是局部映射,然后是全局映射。如果找到匹配项,则处理结果,就像操作已返回一样。

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

答案 1 :(得分:0)

从你的行动中抛出一个SQLException,你就会有答案。

或阅读the documentation,其中说:

  

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