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