簡體   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