Struts加入拦截器后取不到页面参数

Posted Flink菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts加入拦截器后取不到页面参数相关的知识,希望对你有一定的参考价值。

在Struts2的demo项目中添加了一个简单的拦截器,突然发现,Action中取不到页面的参数了

这也是很蛋疼的事情,还好这个比较简单,稍微一查就发现问题:

Struts2中很多的功能是用拦截器实现的,比如:取得表单参数,文件上传,异常处理等

Struts2会默认调用默认的拦截器,默认拦截器配置在struts-default.xml中可以查看

如果在配置文件中加入了自定义的拦截器,那默认的拦截器就不会起作用,在Action中就不能取得表单的参数

这个时候,就需要显试的调用默认的拦截器(defaultStack)

配置如下:

<action name="LoginAction" method="login" class="com.venn.action.LoginAction">
<result>/jsp/success.jsp</result>
<result name="input">/jsp/login.jsp</result>

  <interceptor-ref name="defaultStack"/>  <!--注意顺序,先调用默认的拦截器-->
  <interceptor-ref name="myDefault"/>
</action>

也可以使用拦截器栈:

<struts>

<package name="default" namespace="/" extends="struts-default">

<!-- login interceptor -->
<interceptors>
    <interceptor name="timerInterceptor" class="com.venn.interceptor.TimerInterceptor"></interceptor>
    <interceptor-stack name="myDefault">
      <interceptor-ref name="defaultStack"/>
      <interceptor-ref name="timerInterceptor"/>
    </interceptor-stack>
</interceptors>
<default-action-ref name="index"></default-action-ref>
<action name="index">
<result>/jsp/error.jsp</result>
</action>
<action name="LoginAction" method="login" class="com.venn.action.LoginAction">
<result>/jsp/success.jsp</result>
<result name="input">/jsp/login.jsp</result>
<interceptor-ref name="myDefault"/>
</action>
</package>
</struts>

以上是关于Struts加入拦截器后取不到页面参数的主要内容,如果未能解决你的问题,请参考以下文章

struts2拦截器过滤放行后ajax请求后参数丢了

struts文件上传拦截器分析

struts2的execAndWait拦截器

struts2 如何将拦截器里产生的异常信息输入到统一的错误页面中?

struts2配置过滤器与拦截器

Struts 2内置拦截器