Struts2中自定义拦截器导致Action注入参数丢失
做一个登录验证的页面,对集成admin的所有package进行保护。
??????? <interceptors>
??? <interceptor name="adminLoginInterceptor"
???? >
??????????????????? <param name="pass0">6B8E49836C0C29251833227E3B0F7FB7F8DC67CE</param>
??????????????? </interceptor>
?? </interceptors>
??????? <default-interceptor-ref name="adminLoginInterceptor" />
然而发现所有带有传递参数的均无法正常使用了,在Action中所有的参数无法被注入。
最后发现,struts-default中,默认的拦截器引用是defaultstack,这个拦截器包传说是经过精心设计的。。所以会把所有的参数注入!。。。
因此要更改默认拦截器,需要加上这个defaultstack
??? <package name="admin" extends="struts-default" >
??????? <interceptors>
??? <interceptor name="adminLoginInterceptor"
???? >
??????????????????? <param name="pass0">6B8E49836C0C29251833227E3B0F7FB7F8DC67CE</param>
??????????????? </interceptor>
??????? <interceptor-stack name="adminstack">
?????????????????? <interceptor-ref name="adminLoginInterceptor"></interceptor-ref>
?????????????????? <interceptor-ref name="defaultStack"></interceptor-ref>
??????? </interceptor-stack>
?? </interceptors>
??????? <default-interceptor-ref name="adminstack" />
??????? <global-results>
??????????? <result name="login">/admin/login.jsp</result>
??????? </global-results>
??? </package>
??????? <default-interceptor-ref name="adminstack" />
??????? <global-results>
??????????? <result name="login">/admin/login.jsp</result>
??????? </global-results>
??? </package>
特别注意红色两行的顺序!先自定义再Default