从Struts 2应用程序中的Ajax错误重定向到异常JSP

时间:2018-11-23 19:28:59

标签: ajax jsp struts2 struts

我有一个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中重新处理,或替换这些变量。

0 个答案:

没有答案