使用struts2的拦截器后,我发现跳转以后会丢失访问携带的参数。调试了好久才发现,原来struts的所有action都是有默认拦截器的,这个拦截器如下:
<interceptor-ref name="defaultStack"/>
当我们在action上配置了我们自己实现的拦截器后,struts就会抛弃原有的默认拦截器,而默认的拦截器有处理参数的功能,所以就导致我们的参数在转发中出现丢失的情况。解决方法很简单,就是在我们的拦截器前面配上struts的默认拦截器。
<action name="goCharge" class="com.pay.action.WeiXinPayAction" method="change">
<result name="vipList">/mobile/success.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="openId-interceptor"/>
</action>
加上默认拦截器后,我们就可以在逻辑代码里面获得请求参数