2016-03-08 39 views
0

我已經在struts 2中實現了我的第一個攔截器。我認爲它非常基本,但是當它在action之前運行時,action字段都設置爲null。 不知道什麼即時做錯了 我的攔截器類實現攔截器struts 2過濾所有操作字段數據

public class LoginInterceptor extends AbstractInterceptor { 

private static final long serialVersionUID = 1L; 
private static final Logger log = Logger.getLogger(LoginInterceptor.class); 

@Override 
public String intercept(final ActionInvocation invocation) throws Exception { 
    Map<String, Object> session = ActionContext.getContext().getSession(); 
    User user = SessionUtilities.getUser(session); 

    if (user != null) { 
     return invocation.invoke(); 
    } 

    Object action = invocation.getAction(); 
    if (!(action instanceof LoginAction)) { 
     return "loginRedirect"; 
    } 
    return invocation.invoke(); 
} 

}

我的struts.xml文件是

<interceptors> 
     <interceptor name="login" class="ar.com.cipres.framework.logic.LoginInterceptor"/> 
     <interceptor-stack name="loginStack"> 
      <interceptor-ref name="login"/> 
     </interceptor-stack>   
    </interceptors> 

    <default-action-ref name="go.home" /> 


    <global-results> 
     <result name="loginRedirect" type="redirect">go.loginform.action</result> 
     <result name="exception" type="redirect">exception.jsp</result> 
    </global-results> 

並且配置爲

我有問題的行爲的最後一個
<action name="go.asociate.form" method="prepareAsociateData" class="ar.com.cipres.chacabuco.asociate.AsociateAction"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success">chaca/socios/asociateupdate.jsp</result> 
    </action> 

到目前爲止還沒有評論?

謝謝

回答

0

我想我找到了問題 我必須包括在宣佈新一省去了defaulStack。

所以我需要修改我的struts.xml文件

<interceptors> 
    <interceptor name="login" class="ar.com.cipres.framework.logic.LoginInterceptor"/> 
    <interceptor-stack name="loginStack"> 
     <interceptor-ref name="login"/> 
     <interceptor-ref name="defaultStack"/> <!-- Need to be added to mantain default functionality -->   
    </interceptor-stack>   
</interceptors> 

後來去嘗試