Struts2拦截器问题

robin_ares 2008-06-23 02:44:25
小弟初学struts2,遇到一个问题
有一个动作,是这样调用action的:../menu/menu.action?menuType=1
现在调用这个action前,需要一个拦截器。
问题是,拦截器执行过以后,invoke(),再转到menu.action时 ,menuType
的值丢失,造成空指针。我不明白,拦截器为什么会使参数丢失

现在我这么处理的
<interceptor-ref name ="log" >
<param name="menuType">1</param>
</interceptor-ref>
但是这个拦截器基本每个action都要用,每个action都要这么配参数是行不通的
有什么方法让参数自动传递吗?
...全文
279 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hathawayh 2008-12-05
  • 打赏
  • 举报
回复
有用,谢谢小黑小白和sephiroth
Landor2004 2008-06-24
  • 打赏
  • 举报
回复
要注意拦截器的顺序
Landor2004 2008-06-24
  • 打赏
  • 举报
回复
<default-interceptor-ref name="mydefault"/>
就是设置默认拦截器呀,你传递参数,必须要有params拦截器
那你就这样

<interceptors>
<interceptor class="com.xxx.YourInterceptor" name="yourInterceptor"/>
<interceptor-stack name="mydefault">
<interceptor-ref name="params"></interceptor-ref>
<interceptor-ref name="yourInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault"/>


robin_ares 2008-06-24
  • 打赏
  • 举报
回复
恩,我具体说一下吧
我的自定义拦截器需要取得用户登陆信息,显然,login的action里是取不到的。
我想配成默认的拦截器,这样不用每个action都配,但是只有login的action不执行
我自定义的拦截器,有办法吗
当然,我可以在拦截器类里用getAction()来屏蔽loginAction,但是我希望在
配置文件里处理一下
Landor2004 2008-06-24
  • 打赏
  • 举报
回复
默认栈里面一般的都是需要用的,如果你想自己弄拦截器的话,那你进入struts-default.xml里面把默认栈里面的拦截器都拷贝出来,然后把你的加上,用哪个你就留哪个呗,就怕用不明白,更出问题,还不如留着呢,基本无影响
robin_ares 2008-06-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Landor2004 的回复:]
不知道你这个拦截器和其他拦截器是否放一起了,要放一起,因为你的参数也是通过struts2带的拦截器传到后台的
如果你只写一个拦截器的话,那么其他的拦截器被你取代了,所以你的参数就传不过去了

你可以这样

XML code <package name="yourself-default" extends="struts-default">
<interceptors>
<interceptor class="com.xxx.YourInterceptor" name="yourInterceptor"/>
<…
[/Quote]
这样放到默认栈里的话,有的不需要加拦截器的action也加了,这个怎么解决呢
xiaoheixiaobai 2008-06-24
  • 打赏
  • 举报
回复
我也碰到这个问题了,弄一个默认参数传进去就好了
<action name="userAction" class="userSpring">
<result name="success" type="redirect">/master/User.jsp</result>
<result name="error">/login.jsp</result>
<interceptor-ref name ="userInterceptor" />
<interceptor-ref name ="params"/>
</action>
最好是配成系统默认拦截器的形式,那样你就不用每一个action配置都加拦截器配置了
maodie007 2008-06-24
  • 打赏
  • 举报
回复
显示添加默认拦截器
Landor2004 2008-06-24
  • 打赏
  • 举报
回复
不知道你这个拦截器和其他拦截器是否放一起了,要放一起,因为你的参数也是通过struts2带的拦截器传到后台的
如果你只写一个拦截器的话,那么其他的拦截器被你取代了,所以你的参数就传不过去了

你可以这样
	<package name="yourself-default" extends="struts-default">
<interceptors>
<interceptor class="com.xxx.YourInterceptor" name="yourInterceptor"/>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="yourInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault"/>

</package>
robin_ares 2008-06-24
  • 打赏
  • 举报
回复
用<interceptor-ref name ="params"/>
nec_8899 2008-06-23
  • 打赏
  • 举报
回复

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧