3

在我的 web.xml 上,我有这个:

 <error-page>  
       <exception-type>java.lang.Throwable</exception-type>  
       <location>/error.do</location>   
 </error-page>  
 <error-page>  
       <exception-type>org.apache.struts.chain.commands.UnauthorizedActionException</exception-type>  
       <location>/unauthorized.do</location>  
  </error-page>  

问题是:当我有一个 UnauthorizedActionException 时,被调用的动作是“error.do”(Throwable 动作)。如果我评论 Throwable,当我有 UnauthorizedActionException 时,动作是好的,但是当我放置 throwable 时,它​​会发生错误的动作。谁能帮我?

4

1 回答 1

1

UnauthorizedActionException继承自,java.lang.Throwable因此由您的第一个错误页面定义处理它是有效的。

尝试将定义重新排序为...

 <error-page>  
       <exception-type>org.apache.struts.chain.commands.UnauthorizedActionException</exception-type>  
       <location>/unauthorized.do</location>  
  </error-page> 
 <error-page>  
       <exception-type>java.lang.Throwable</exception-type>  
       <location>/error.do</location>   
 </error-page>  

[编辑]关注您的评论

然后我建议从你的 web.xml 中删除这些条目,并在你的 struts-config.xml 中配置你的异常处理程序。您可能会在全局范围内定义异常处理程序。像这样的东西...

<global-results>
    <result name="login" type="redirect">/Login.action</result>
    <result name="Exception">/Exception.jsp</result>
    <result name="UnauthorizedActionException">/UnauthorizedActionException.jsp</result>
</global-results>

<global-exception-mappings>
    <exception-mapping exception="org.apache.struts.chain.commands.UnauthorizedActionException" result="UnauthorizedActionException"/>
    <exception-mapping exception="java.lang.Exception" result="Exception"/>
</global-exception-mappings>
于 2012-08-28T13:18:01.560 回答