struts2缓存问题

在使用Struts2进行异步分页时遇到一个问题,首次访问获取正确数据,但后续请求会保留之前分页状态。经过排查,发现action被Spring以singleton模式管理,导致多次请求复用同一实例。解决方案是将action的scope设置为prototype,确保每次请求创建新实例,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试了这么久,总算解决了这个问题,一定得总结一下

问题描述: 在页面上做了一个异步分页,  第一次访问可以获取到所有员工分页列表,当进行部门分页时,获取到的是部门的所有员工,可是当再次去获取所有员工分页时, 返回的是上次获取部门后的所有员工.?

解决过程:一直以为是前台js问题,debug调试发现,第3次再次访问action时,进来的参数仍然是上次(按部门分页时的参数),终于找到原因了,如何解决呢?经过baidu,发现了下面的回答,

刚好,我的项目就是ssh整合开发, 是不是这个原因呢?  我的action创建是交给spring管理的,于是更改spring配置文件

    <!-- 用户Action -->
    <bean id="userAction" class="com.xxx.action.UserAction"    scope="prototype">
        <property name="iuserService" ref="sysUserServiceImpl"/>
        <property name="sysUser" ref="sysUser"/>
    </bean>


添加scope属性为 prototype,重启发现问题已经解决了. 对scope不太了解,于是baidu了一下.


scope:有多个作用域分别是prototype、request、session、global session

默认作用域: 即scope="singleton“    单例模式   

 <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/> 这里的 scope 就是用来配置 spring bean 的作用域,它标识 bean 的作用域。 在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称 prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean


参看博客:http://www.juziku.com/zhouchao/wiki/4036.htm



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值