今天继续测试ssh的整合,发现之前的struts2的验证方法validate方法有异常。具体是这样的:
比如第一次输入的时候故意输入错误,第二次再正确输入后,还是不能提交,而且error的信息还在页面。
仔细的看了一下代码,才知道错误的根源:
spring里面配置了action,然后struts2.xml里面的action的class属性直接引用spring的bean的id值,此时struts2委托spring来管理自己的action了。所以,我们应该显式的在spring的配置文件上多加上:scope="prototype"。也就是每次请求时都成圣一个新的action,而spring默认的是singleton,即spring容器只是创建了一个而已。
<bean id="ListAllUsers" class="com.guang.action.UserAction"
scope="prototype">
<property name="userService" ref="userservice"></property>
</bean>
希望对你有所帮助,谢谢!
本文详细介绍了在使用Struts2与Spring整合时,遇到的Action实例管理问题及其解决方法。通过调整Spring配置,将Action实例的scope设置为prototype,确保每次请求都能得到一个新的Action实例,从而避免了错误的验证信息残留于页面的问题。
364

被折叠的 条评论
为什么被折叠?



