繁体   English   中英

struts2拦截器重定向两次以执行操作

[英]struts2 interceptor redirecting twice to action

我有一个用于检查会话成员对象的logininterceptor,如果为null,则将其重定向到登录页面,否则继续操作。

每个动作块都具有此拦截器。 问题是,当您调用动作时,它会击中拦截器,如果确实如此,则继续执行动作方法,然后返回“成功”或“输入”,然后再次击中拦截器以重定向所选结果名称。

如何防止两次调用拦截器?

拦截器代码:

public String intercept(ActionInvocation actionInvocation) throws Exception {
        HttpServletRequest request = (HttpServletRequest) actionInvocation.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
        HttpSession session = request.getSession();

    if (session.getAttribute("member")==null) {

        return Action.LOGIN;
    } else {
        return actionInvocation.invoke();
    }
}

struts.xml操作视图:

    <action name="actionName" class="actionClass" method="init">
        <interceptor-ref name="loginStack"/>
        <result name="input">show.jsp</result>
    </action>

如果您重定向到引用中具有相同拦截器的结果,那么它将被两次调用。

如果您按照此处显示的方式转发到JSP,则不会再次调用拦截器。


无需为每个操作都声明它-设置默认的拦截器堆栈。 对于那些并不需要这个堆栈(如登录)定义拦截裁判对那个动作不包括这个拦截行动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM