簡體   English   中英

登錄攔截器(自定義攔截器)清除操作參數

[英]Login Interceptor(Custom Interceptor) clearing the Action Parameters

這是攔截器代碼:

public class LoginInterceptor extends AbstractInterceptor implements
    StrutsStatics {
/**
 * 
 */
private static final long serialVersionUID = 1L;

@Override
public String intercept(ActionInvocation invocation) throws Exception {
    ActionContext context = invocation.getInvocationContext();
    HttpServletRequest request = (HttpServletRequest) context
            .get(HTTP_REQUEST);
    HttpSession session = request.getSession(false);

    String loginId = (String) session
            .getAttribute(Constants.SESSION_ATT_USERID);

    if (loginId == null) {
        return Action.LOGIN;
    } else {
        return invocation.invoke();
    }

}
}

調用任何特定動作時,都會調用攔截器。 但是操作的參數為空。 如果運行沒有攔截器的代碼,則其工作正常。 我嘗試通過多種方式解決此問題,但找不到任何解決方案。

當您想使用攔截器時,需要將其添加到defaultStack或您的customStack中,而您極有可能僅使用該攔截器來進行操作。 這意味着沒有任何其他Interceptor正在為該動作調用運行,甚至沒有參數Interceptor負責在動作中設置參數。

錯誤:

<action name="foo" class="org.foo.bar.foobarAction">

    <interceptor-ref name="myLoginInterceptor"/>

    <result>success.jsp</result>
</action>

對:

<action name="foo" class="org.foo.bar.foobarAction">

    <interceptor-ref name="myLoginInterceptor"/>
    <interceptor-ref name="defaultStack"/>

    <result>success.jsp</result>
</action>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM