解决拦截器的对于参数传递无效问题
今天做项目时,使用拦截器对用户权限检查。拦截器本身没有问题,可是实现权限拦截,但是传递的参数全部都无效了。搞了很久,由于对拦截器的内部机制不是特别熟悉,所以重新研读了一下Struts2的拦截器。找到了原因:给一个Acton配置一个自定义拦截器后,此action就无法使用框架默认的拦截器栈了,这就导致前后台数据传输无效。
解决方法一般有两种:
一、显示的使用默认拦截器
1 <action name="enterSystem_*" class="enterSystemManager" method="{1}"> 2 3 <!-- 使用拦截器:进行权限检查 --> 4 5 <interceptor-ref name="defaultStack" /> 6 7 <interceptor-ref name="autority" /> 8 9 <result name="workerMangerUI">/WEB-INF/page/backstage/system/workerManager.jsp</result> 10 11 <result name="positionMangerUI">/WEB-INF/page/backstage/system/positionManager.jsp</result> 12 13 </action>
二、使用<interceptor-ref name="params" />让参数先传递
<action name="enterSystem_*" class="enterSystemManager" method="{1}"> <!-- 使用拦截器:进行权限检查 --> <interceptor-ref name="params" /> <interceptor-ref name="autority" /> <result name="workerMangerUI">/WEB-INF/page/backstage/system/workerManager.jsp</result> <result name="positionMangerUI">/WEB-INF/page/backstage/system/positionManager.jsp</result> </action>
-
作者:chenssy。一个专注于【死磕 Java】系列创作的男人
出处:https://www.cnblogs.com/chenssy/archive/2012/08/23/2652181.html
作者个人网站:https://www.cmsblogs.com/。专注于 Java 优质系列文章分享,提供一站式 Java 学习资料
目前死磕系列包括:
1. 【死磕 Java 并发】:https://www.cmsblogs.com/category/1391296887813967872(已完成)
2.【死磕 Spring 之 IOC】:https://www.cmsblogs.com/category/1391374860344758272(已完成)
3.【死磕 Redis】:https://www.cmsblogs.com/category/1391389927996002304(已完成)
4.【死磕 Java 基础】:https://www.cmsblogs.com/category/1411518540095295488
5.【死磕 NIO】:https://www.cmsblogs.com/article/1435620402348036096
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。