Struts2错误处理 - 找不到异常堆栈

时间:2010-11-04 10:05:01

标签: error-handling exception-handling struts2 scope stack-trace

我遇到了一件奇怪的事。我已经在struts 2.1.8中配置了异常处理,就像声明here一样,只是我重定向到一个动作而不是JSP(发送电子邮件......)。

所以,在我的行动中

ActionContext ac = ActionContext.getContext();
String stackTrace = null;
if(ac.getValueStack().findValue("exceptionStack") != null) {            
    stackTrace =  ac.getValueStack().findValue("exceptionStack").toString();
} else {
    stackTrace = "Stack trace not found!";
}

我必须使用if-else,因为有时值为null。我没有发现差异为什么有时候我会得到堆栈跟踪,有时候我没有。所有错误都发生在Struts2中。

有没有人有类似的问题?任何人都能指导我问题在哪里吗?

2 个答案:

答案 0 :(得分:1)

首先,ValueStack是每个请求(每个帖子都有自己的),因此重定向到新操作会导致您丢失上一个请求ValueStack中的所有数据。

话虽如此,你的目标是什么?您提供的链接说明了如何将不同类型的例外映射到自定义错误页面(或结果)。为什么这不适合你呢?您提到要发送电子邮件 - 您是否正在发送有关实际异常(和堆栈跟踪)的电子邮件通知?

如果你可以扩展一下你想要做的事情,那么也许我们可以给你一些指导。

答案 1 :(得分:1)

如果你用链式结果类型映射异常,你将保持相同的请求,因此同样的ValueStack。