struts2增加拦截器后action无法get页面传值

<interceptors>
 <interceptor name="loginInterceptor"   class="com.mayh.struts.interceptor.LoginInterceptor">
 </interceptor>
 <interceptor-stack name="default" >
 <interceptor-ref name="loginInterceptor">
</interceptor-ref>
 
<interceptor-ref name="defaultStack">
</interceptor-ref>

</interceptor-stack>
</interceptors>
<default-interceptor-ref name="default"></default-interceptor-ref>


解决方法如上,添加defaultStack默认拦截器

特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,否则出错。
也可以改为对全局Action设置自己需要的拦截器,如下:

在struts.xml里面定义全局的配置设置
  <package name="struts-shop" extends="struts-default">
    <interceptors>
      <interceptor-stack name="myStack">
        <interceptor-ref name="checkbox">
          <param name="uncheckedValue">0</param>
       </interceptor-ref>
       <interceptor-ref name="defaultStack"/>
      </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack"/>(这句是设置所有Action自动调用的拦截器堆栈)
  </package>

struts-action.xml里面配置Action如下:
  <package name="LogonAdmin" extends="struts-shop">(这里扩展struts.xml里面定义的配置就可以了)
  <action name="logon" class="logonAction">
     <result>/jsp/smeishop/admin/index.jsp</result>
     <result name="error">/jsp/smeishop/admin/logon.jsp</result>
     <result name="input">/jsp/smeishop/admin/logon.jsp</result>
   </action>
   <action name="logout" class="logoutAction">
     <result>/jsp/smeishop/admin/logon.jsp</result>
   </action>
</package>

你可能感兴趣的:(struts2)