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