转载:由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的问题,困扰了多天,今天终于找到问题的根子,专门转载此文。

posted @ 2013-05-07 11:52  榕树藤  阅读(222)  评论(0)    收藏  举报