[英]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.