我使用struts2构建登录平台。我使用一个Interceptor扩展MethodFilterInterceptor。在方法doIntercept中,我使用“ actionInvocation.invoke()”代替“ return actionInvocation.invoke()”。但它也可以运行。
struts-2.5.18
public class loginInterceptor extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
if (ServletActionContext.getRequest().getSession().getAttribute("user") != null){
actionInvocation.invoke();
}
return null;
}
}
我认为因为该方法返回null,所以不应跳转到该视图。但是,确实如此。
答案 0 :(得分:0)
请参阅"Writing Interceptors" docs。
重要的部分:
[...]
invoke
将在调用结果后 (例如,呈现JSP之后)返回,使其非常适合诸如open-session-in视图模式。如果要在调用结果之前做一些事情,则应实现PreResultListener。
即,如果您调用invoke
,则拦截器和操作将照常执行。
要短路正常处理,请不调用invoke
,而是返回适合您目的的结果,例如登录页面的全局结果。