最近在写SSH的项目时候,由于需要用到strtus的xml校验,但是刚开始的时候出现了错误信息重复出现的问题,就像现在这个样子。
当重复点击注册按钮时,错误信息会累积出现,当百度之后发现是因为spring注入的原因,由于每一个-validation.xml对应的为一个action,所以strtus会交给spring来管理,而spring默认的是单例的,所以说需要在配置的action中增加属性 scope="prototype",表示一个线程一个实例,这样就不会出现重复出现的问题了。
2. spring中scope是spring的概念,简单说就是对象在spring容器(IOC容器)中的生命周期,也可以理解为对象在spring容器中的创建方式。
scope有四种方式,分别为:
(1)singleton
表明容器中创建时只存在一个实例,所有引用此bean都是单一实例。
(2)prototype
spring在将bean设置为该属性之后每次出现新的请求都会生成新的对象,,虽说该对象有ioc容器产生,但是当把对象实例返回到请求的一方时,IOC就不在拥有该对象的引用,最典型的应用就是spring与strtus整合时要将action设置为该属性,以便于将实例交给请求方后该对象便自生自灭。
(3)request
(4)session
(5) global session