Перенаправление на исключительную JSP из ошибки Ajax в приложении Struts 2 - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть приложение Struts 2, где исключения обрабатываются стандартным способом: у нас есть исключительная JSP для ошибок на стороне сервера, и она подключена соответствующим образом.Обратите внимание, что в него входят переменные Message / StackTrace as 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, даже если я выбрасываюИсключение, исключительная JSP не обрабатывается.Вместо этого я получаю ответ AJAX, который содержит мой 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 или заменить эти переменные.

...