我有一个Struts 2应用程序,其中以标准方式处理异常:我们有一个用于服务器端错误的Exception JSP,并且已正确连接。请注意,它包含Message / StackTrace作为Struts变量。
例外。JSP
<html>
<head>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>
<body>
<div>
<label>Error Description</label>
<s:actionerror />
<div>
<strong><s:property value="%{exception.message}" /></strong>
<br/>Stack Trace:<br/>
<s:property value="%{exceptionStack}" />
</div>
</body>
struts.xml
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="exception" />
<exception-mapping exception="java.lang.RuntimeException" result="exception" />
</global-exception-mappings>
<global-results>
<result name="exception">/WEB-INF/jsp/admin/exception.jsp</result>
</global-results>
这对于服务器端抛出的错误(例如来自JSP返回操作)的正常工作很有效,但是我们在应用程序中也有AJAX请求。
在发起AJAX的操作中,即使抛出Exception,也不会呈现Exception JSP。相反,我得到一个AJAX响应,其中包含我的Exception JSP作为textStatus.responseText
:
$.ajax({
url: ...,
dataType: "json",
type: "post",
data: params,
success: function (data){
...
},
error: function (textStatus, errorThrown) {
// textStatus.responseText has my Exception JSP
}
});
问题:如何重定向到 Struts异常JSP (具有通过Struts变量指定的正确消息和堆栈跟踪)出现AJAX错误后显示标准错误页面?
我知道我可以使用window.location.href
重定向到标准的通用JSP,但是我将丢失Message / StackTrace占位符。好像我需要在Struts中重新处理,或替换这些变量。