1

我试图找到一种方法在 struts.xml 中为 Action 类可以抛出的每种异常类型配置错误消息。在动作类中,我可以通过捕获异常、调用addActionError(String)并重新抛出异常(假设<exception-mapping>存在)来完成类似的操作。有没有办法通过配置来做到这一点?

作为参考,这个功能存在于 Struts1 中,key具有异常处理程序的属性——我希望能够做类似的事情。

<exception key="some.key"
           type="java.io.IOException"
           handler="com.yourcorp.ExceptionHandler"/>
4

2 回答 2

0

在 Struts2 中,您可以使用以下映射将键/消息传递给结果(结果可以是 jsp 或其他操作类)。

<global-exception-mappings>
 <exception-mapping exception="com.test.exception.MyCustomException"  result="error">
    <param name="param">display.custom.error</param>
 </exception-mapping>
</global-exception-mappings>

<global-results>
    <result name="error" type="chain">handleAction</result>
</global-results>

<action name="handleAction" class="HandleExceptionAction">          
     <result name="result">/WEB-INF/jsp/error.jsp</result>
</action>

如果它是动作类,则在链接的情况下(如果用户想要处理异常),那么您需要在动作类中具有相应的属性,其中包含 getter 和 setter。

public class HandleExceptionAction extends ActionSupport implements 
               ServletRequestAware, SessionAware {

private **String param**; 

private HttpServletRequest httpRequest;
private static final Log LOG = LogFactory.getLog(InputAction.class); 

public String execute(){

    LOG.debug("inside excute().....");
    LOG.debug("Parameter passed:" + param);
    System.out.println("Parameter passed:" + param);

    return "result";
}

我正在使用弹簧注射,希望它会帮助你。

于 2014-08-21T03:36:43.640 回答
0

在 strut2 中,您还可以定义异常映射。请参阅http://struts.apache.org/release/2.1.x/docs/exception-configuration.html。您可以有一个常见的 error.jsp,它显示一条根据异常的类名查找的消息。

于 2013-03-17T14:57:14.197 回答