覆盖struts 2拦截器

时间:2016-01-30 05:35:55

标签: java struts2 interceptor struts2-interceptors

我们正在使用store拦截器。在极少数情况下,此拦截器会抛出Session Already Invalidate异常,同时尝试在会话中放置错误消息(MessageStoreInterceptor行:282)。

我试图覆盖这个拦截器并以静默方式浅化异常,然后执行操作。

看起来很简单,但是当异常发生时我无法找到应该返回的内容(如何获得下一个拦截器?!):

public class MyMessageStoreInterceptor extends MessageStoreInterceptor {

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {

        try{
            return super.intercept(invocation);
        }catch(IllegalStateException ex){
            return ??; 
        }

    }    
}

1 个答案:

答案 0 :(得分:2)

如果你想进入下一个拦截器,你应该返回invocation.invoke()。它返回一个动作结果。如果由于异常而未获得结果,并且您希望继续操作调用,则应返回自己的结果或其中一个预定义结果,例如SUCCESSERROR

@Override
public String intercept(ActionInvocation invocation) throws Exception {

    try{
        return super.intercept(invocation);
    }catch(IllegalStateException ex){
        return Action.ERROR; 
    }

}