为了账号安全,请及时绑定邮箱和手机立即绑定

拦截器:actionInvocation.invoke() 不返回,但也跳转到视图

拦截器:actionInvocation.invoke() 不返回,但也跳转到视图

慕桂英3389331 2022-04-28 17:09:34
我用struts2搭建了一个登录平台。我使用一个拦截器扩展 MethodFilterInterceptor。在方法 doIntercept 中,我使用“actionInvocation.invoke()”而不是“return actionInvocation.invoke()”。但它也运行。struts-2.5.18public class loginInterceptor extends MethodFilterInterceptor {    @Override    protected String doIntercept(ActionInvocation actionInvocation) throws Exception {        if (ServletActionContext.getRequest().getSession().getAttribute("user") != null){            actionInvocation.invoke();        }        return null;    }}我认为因为该方法返回null,所以它不应该跳转到视图。但是,确实如此。
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

请参阅“编写拦截器”文档

重要的部分:

[...]invoke将在调用结果返回(例如,在您的 JSP 被渲染后),使其非常适合诸如 open-session-in-view 模式之类的事情。如果你想在结果被调用之前做一些事情,你应该实现一个 PreResultListener。

即,如果您调用invoke,拦截器和操作将正常执行。

短路正常处理不要调用invoke而是返回适合您目的的结果,例如登录页面的全局结果。


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号