У меня есть пользовательский перехватчик, из которого я бросаю исключение;Почему исключение, поднятое из моего перехватчика, не попадает в список <global-exception-mappings>?
Действия, выполняемые с использованием Interceptor плагином Конвенции;
Исключение, созданное перехватчиком, определено глобально в файле struts.xml для пакета, в котором выполняется действие.
РЕЗУЛЬТАТ: отображение исключение игнорируется, и я получаю отчет
Struts Проблема
Struts обнаружил необработанное исключение:
...
Stacktraces
java.lang.IllegalArgumentException: мое сообщение
Я думаю, я просто не хватает что-то глупое ... мы уже говорили об этом in a similar question, но это все еще не ясно, если он может или не может работать так:
struts.xml
<package name="my-package" namespace="my" extends="struts-default">
<interceptors>
<interceptor name="myInterceptor" class="foo.bar.MyInterceptor"/>
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<global-results>
<result name="input">/WEB-INF/content/my-input.jsp</result>
<result name="error">/WEB-INF/content/my-error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.IllegalArgumentException"
result="error" />
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
</package>
Действие
@ParentPackage("my-package")
@Namespace("/my/blabla/yadayada")
public class MyAction extends MyBaseAction {
}
перехватчик
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
// ....
if (somethingWrong) {
throw new IllegalArgumentException("All work and no play makes Jack a dull boy");
}
}
Я также попытался определение глобального результата/глобальное картирования исключения в абстрактном BaseAction, или в физическом реальном самом действии, но они игнорируются тоже.
Любая идея о том, что добавить/удалить/изменить, чтобы заставить его работать должным образом? Это не эзотерический материал, это основные: |
2.3.16.3 (Невозможно обновить до 2.3.20 из-за несовместимости с плагином struts2-jquery 3.7.1 ... в ожидании 4.0.0, то) –
Таким образом, нет никакого * пути к карте исключение, возвращенное перехватчиком к известному результату? Я могу вернуть результат из Interceptor, но он больше не будет отделен от конфигурации проекта ... если я верну свое исключение, оно может быть отображено или нет (и, следовательно, будет отображаться украшенным или необработанным), а если я верну результат он должен быть определен в config ... BTW добавьте его в качестве ответа, чтобы я мог его перенести и (скорее всего) принять –
Вне темы: * ... несовместимости с плагином struts2-jquery 3.7.1 * Знаете ли вы какие-либо из них? Я просто обновил приложение с некоторыми функциями s2-jqr и, похоже, работает нормально ... пока. ;) –