再配置Action时有时需要引用拦截器栈,但需要覆盖拦截器栈中某个拦截器的参数值。如何覆盖拦截器中的参数呢?
1:通过定义拦截器栈时覆盖拦截器的值:
<package name="struts_login" extends="struts-default" namespace="/">
<interceptors>
<interceptor name="first" class="com.demo1.interceptor.OverridefirstInterceptor"><!--定义拦截器first -->
<param name="paramvalue">first's默认值</param><!--为拦截器默认参数赋值 -->
</interceptor>
<interceptor name="second" class="com.demo1.interceptor.OverridesecondInterceptor"><!--定义拦截器second -->
<param name="paramvalue">second's默认值</param><!--为拦截器默认参数赋值 -->
</interceptor>
<interceptor-stack name="overridestack"><!--定义拦截器栈 -->
<interceptor-ref name="first"><!--引用拦截器first -->
<param name="paramvalue">first's stack覆盖值</param><!--覆盖拦截器first的默认参数值-->
</interceptor-ref>
<interceptor-ref name="second"><!--引用拦截器second -->
<param name="paramvalue">second's stack覆盖值</param><!--覆盖拦截器second的默认参数值-->
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="checkLogin"/>
<action name="loginAction" class="com.demo1.action.LoginAction" method="checkLogin">
<result name="success">/index.jsp</result>
<result name="login">/login.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="overridestack"/><!--引用拦截器栈 -->
</action>
</package>
1:通过配置Action时覆盖拦截器的值:
<action name="loginAction" class="com.demo1.action.LoginAction" method="checkLogin">
<result name="success">/index.jsp</result>
<result name="login">/login.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="overridestack"><!--引用拦截器栈 -->
<param name="first.paramvalue">first's Action覆盖值</param><!-- 覆盖拦截器参数值格式:拦截器名.参数名 -->
</interceptor-ref>
</action>