在web.xml中处理多个<error-page>定义</error-page>

时间:2012-08-28 12:53:49

标签: exception-handling error-handling struts web.xml

在我的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放进去时,它就会出错。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分: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和configure your exception handlers in your 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>