转载:由Spring管理的Struts2 错误信息重复累加和错误后无法再提交问题
天做SSH2提交登录的时候,表单验证失败后,无法再提交(进入不了action)
【资料】
struts2和spring的一些特点:
       1) Struts2 会对每一个请求,产生一个Action的实例来处理.
2) Spring的Ioc容器管理的bean默认是单实例的.
当Struts2与Spring整合后,由spring来管理Struts2的Action,会遇到什么问题 ?如何解决 ?
Struts2与Spring整合后, 由spring来管理Struts2的Action,   bean默认是单实例有情况下,会有如下问题:
1) Action是单例,其中的FieldError,actionerror中的错误信息 会累加, 即使再次输入了正确的信息,也过不了验证.
2) Struts2的Action是有状态的,他有自己的成员属性, 所以在多线程下,会有问题.
如何解决?
 
方案一: 就是不用单例, spring中bean的作用域设为prototype,每个请求对应一个实例.
方案二: spring中bean的作用域设为session ,每个session对应一个实例,解决了多线程问题。再写一个拦截器,  清空
FieldError与actionerror
public class ClearFieldErrorInterceptor extends AbstractInterceptor{ @Override 
                   public String intercept(ActionInvocation invocation)throws Exception { 
                               ActionSupport actionSupport = (ActionSupport)invocation.getAction(); 
                               actionSupport.clearErrorsAndMessages(); 
                               String resultCode = invocation.invoke(); 
                               return resultCode; 
                  } 
     }
做一个系统登录功能,成功登录没有任何问题,如果密码输入错误,就会出现无法进入action的问题,困扰了多天,今天终于找到问题的根子,专门转载此文。
                    
                
                
            
        
浙公网安备 33010602011771号