Итак, у меня есть приложение Struts2, над которым я работаю. На моей главной странице есть раздел, в котором будут отображаться все исключения, которые выбрасывает мое приложение. Это работало хорошо, пока я не добавил пользовательский перехватчик.
Вот мой код перехватчика:
public String intercept(ActionInvocation actionInvocation) throws Exception {
String result = actionInvocation.invoke();
return result;
}
Это код в моем классе Action, где генерируется исключение, оно происходит там, где вызывается AuthService.Authorize ():
if(AuthService.Authorize(username, password)) {
if(AuthService.AdminAuthorized()) {
return "admin";
}
return SUCCESS;
}
Это внутри AuthService.Authorize (), он выдает исключение нулевой точки при обращении к acc:
try {
acc = profileRepository.WhereSingle("Username", "=", username);
} catch (Exception e) {
return false;
}
if (acc.Password.equals(password)) {
Однако, когда страница загружена. Это не заполнено:
<s:property value="%{exception.message}"/>
Я проверил это, и оно работало бы, если бы я просто выбрасывал исключение из класса Action. Я не вызываю redirectAction или что-либо еще
Вот вершина моего определения пакета по умолчанию, которое расширяют все остальные мои пакеты
<package name="default" namespace="/" extends="struts-default">
<!-- Interceptors -->
<interceptors>
<interceptor name="conversation" class="global.ConversationInterceptor"/>
<interceptor-stack name="dils-stack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="conversation"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="dils-stack"/>
<global-results>
<result name="Exception" >/index.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="Exception"/>
<exception-mapping exception="java.lang.NullPointerException" result="Exception"/>
</global-exception-mappings>