spring与struts2进行整合做一个平台项目:
当我点击一个功能时,写入搜索关键字时,查到对应的表数据,但切换其他功能,再次点这个功能,结果在没有输入关键字查询的情况下,显示的表数据仍然是上一次我写入关键字查询到的结果,为什么?
解答:是因为我在后台没有写这个注解:
@Scope("prototype")
加了这个之后就解决了,原因:
如果我不加这个注解,那么每次当我从前台传到后台时,都用的同一个实例,所以也就是说,我第二次调用方法的时候,传入的对象仍然是包含输入关键字的bean,那么导致了上述出现的数据错误;
spring容器在进行输出prototype的bean对象时,会每次都重新生成一个新的对象给请求方,虽然这种类型的对象的实例化以及属性设置等工作都是由容器负责的,但是只要准备完毕,并且对象实例返回给请求方之后,容器就不在拥有当前对象的引用,请求方需要自己负责当前对象后继生命周期的管理工作,包括该对象的销毁。也就是说,容器每次返回请求方该对象的一个新的实例之后,就由这个对象“自生自灭”,最典型的体现就是spring与struts2进行整合时,要把action的scope改为prototype。