所以我有一个正在开发的 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>