Я нашел один способ сделать это.Я не уверен, что это лучше или проще, но это работает.Я нашел руководство по настройке исключений Struts и добавил следующее к своему <package>
внутри struts.xml
:
<global-results>
<result name="exception">/exception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="exception" />
</global-exception-mappings>
Это приводит к перенаправлению всех необработанных исключений на /exception.jsp
.А вот содержимое JSP:
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="application/json; charset=UTF-8" %>
<% response.setStatus(500); %>
{"success": false,"errors": "<s:property value="%{exception.message}"/>"}
В 3-й строке вы заметите, что я вручную установил код ответа 500.
Это дало мне новую проблему: исключений не былобыть зарегистрированным больше.Как указывалось в вышеупомянутом руководстве по Struts, я решил эту проблему, добавив следующее в мои <package>
in struts.xml
:
<interceptors>
<interceptor-stack name="appDefaultStack">
<interceptor-ref name="defaultStack">
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">ERROR</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="appDefaultStack" />
Struts: -1 для создания такой простой и очевидной функции, НЕпо умолчанию, и еще -1 для того, чтобы сделать решение таким тупым.