Error handling Struts2错误处理-未找到异常堆栈

Error handling Struts2错误处理-未找到异常堆栈,error-handling,exception-handling,struts2,scope,stack-trace,Error Handling,Exception Handling,Struts2,Scope,Stack Trace,我遇到了一件奇怪的事情。我在struts 2.1.8中配置了异常处理,只不过我重定向到了一个操作,而不是JSP(发送电子邮件…) 所以,在我的行动中 ActionContext ac = ActionContext.getContext(); String stackTrace = null; if(ac.getValueStack().findValue("exceptionStack") != null) { stackTrace = ac.getValue

我遇到了一件奇怪的事情。我在struts 2.1.8中配置了异常处理,只不过我重定向到了一个操作,而不是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,因为有时候这个值是空的。我还没有发现为什么有时我得到堆栈跟踪,有时我没有。所有的错误都发生在Struts2中


有没有人有类似的问题?有人能告诉我问题出在哪里吗?

首先,
ValueStack
是每个请求(每个线程都有自己的线程),因此重定向到新操作将导致您丢失以前请求的
ValueStack
中的所有数据

说到这里,你的目标是什么?您提供的链接解释了如何将不同类型的异常映射到自定义错误页(或结果)。为什么这对你不起作用?您提到要发送电子邮件——您是否发送了关于实际异常(和堆栈跟踪)的电子邮件通知


如果您可以详细介绍一下您正在尝试执行的操作,那么我们也许可以给您一些指导。

如果您将异常映射为chain result type,那么您将保留相同的请求,从而保持相同的值堆栈。

啊哈。ValueStack是每个请求的-这很重要。现在,我必须找出如何获得ValueStack和异常。是的,这是解决方案-只是改变结果类型。谢谢