覆盖 struts 2 拦截器
Override an struts 2 interceptor
我们正在使用 store
拦截器。在极少数情况下,此拦截器会抛出 Session Already Invalidate
异常,同时尝试将错误消息放入会话中(MessageStoreInterceptor
行:282)。
我试图覆盖这个拦截器并悄悄浅化异常,让动作被执行。
看起来很简单但是我找不到我应该return当异常发生时(我如何获得下一个拦截器?!):
public class MyMessageStoreInterceptor extends MessageStoreInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
try{
return super.intercept(invocation);
}catch(IllegalStateException ex){
return ??;
}
}
}
如果你想到达下一个拦截器,你应该 return invocation.invoke()
。它 return 是一个动作结果。如果由于异常而没有得到结果,并且想要继续操作调用,则应该 return 自己的结果或预定义结果之一,例如 SUCCESS
或 ERROR
.
@Override
public String intercept(ActionInvocation invocation) throws Exception {
try{
return super.intercept(invocation);
}catch(IllegalStateException ex){
return Action.ERROR;
}
}
我们正在使用 store
拦截器。在极少数情况下,此拦截器会抛出 Session Already Invalidate
异常,同时尝试将错误消息放入会话中(MessageStoreInterceptor
行:282)。
我试图覆盖这个拦截器并悄悄浅化异常,让动作被执行。
看起来很简单但是我找不到我应该return当异常发生时(我如何获得下一个拦截器?!):
public class MyMessageStoreInterceptor extends MessageStoreInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
try{
return super.intercept(invocation);
}catch(IllegalStateException ex){
return ??;
}
}
}
如果你想到达下一个拦截器,你应该 return invocation.invoke()
。它 return 是一个动作结果。如果由于异常而没有得到结果,并且想要继续操作调用,则应该 return 自己的结果或预定义结果之一,例如 SUCCESS
或 ERROR
.
@Override
public String intercept(ActionInvocation invocation) throws Exception {
try{
return super.intercept(invocation);
}catch(IllegalStateException ex){
return Action.ERROR;
}
}