由Spring管理的Struts2 fielderror信息重复累加问题

今天在修改一个遗留项目的时候,登录页面上的用户名和fielderror等信息在关闭留言器后重新打开,还存在,排除了缓存的问题后,以为是session的问题,用struts2做了一个fielderror的小demo发现页面每次关闭后都会清空fielderror的值,无需要手动在action中加入clearErrorsAndMessages(),后来查阅了资料后解决了问题,原来是spring整合strtus2的问题:

【资料】

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

  1. public class ClearFieldErrorInterceptor extends AbstractInterceptor {
  2. @Override
  3. public String intercept(ActionInvocation invocation) throws Exception {
  4. ActionSupport actionSupport = (ActionSupport)invocation.getAction();
  5. actionSupport.clearErrorsAndMessages();
  6. String resultCode = invocation.invoke();
  7. return resultCode;
  8. }
  9. 转自: http://hi.baidu.com/%BF%AA%CB%B3/blog/item/c09aca061884acc37a89475a.html
时间: 2024-10-01 07:34:49

由Spring管理的Struts2 fielderror信息重复累加问题的相关文章

[学习笔记]spring mvc 与struts2比较

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二) 在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些配置文件的分析. 一.Spring MVC 3.0介绍 Spring MVC是一个典型的MVC框架,是Spring内置的Web框架,可以作为应用项目的展示层,继Spring 2.0对Spring

Spring、Spring MVC、Struts2、、优缺点整理(转)

Spring 及其优点 大部分项目都少不了spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类.   DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,

Spring 管理数据源

Spring 管理数据源 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般是Web应用服务器提供的.在Spring中,你不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,你还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试配置一个数据源. Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0.可以在Spring配置文件

mybatis如何由spring管理数据源(mybatis和spring的交互流程)

本文章比较枯燥,源码居多.都是本人一步一步debug出来的,如果有问题欢迎指出.为了体现流程连贯性,所以由很多无用步骤.读者可以一边看一边debug.如果简单可以自行略过. 在前面的章节中我们已经知道mybatis在初始化过程.(org.mybatis.spring.SqlSessionFactoryBean的afterPropertiesSet())在初始化mybatis的时候会将所有配置封装到Configuration类中,由JVM加载到内存中.这样做的好处是内存级操作是最快的,无需重复读取

Spring框架整合Struts2

1,用Spring架构,及Struts2-spring-plugin插件 导入Spring的dist全部所需的jar包 Struts2的spring插件 struts2-spring-plugin.XX.jar struts2的核心包 struts2-core.XX.jar xwork- core.XX.jar commons.logging.XX.jar ...根据需要选择导入 2,配置web.xml中applicationContext.xml的参数路径及侦听器 <context-param

是管理信息系统(MIS)还是信息管理系统(IMS)?

其实这是一个很简单的问题,但到目前为止很多搞信息化的人还经常没搞清楚,很容易闹出笑话. 记 得在2000年的时候,我正好当时在读北大光华管理学院MBA网校班,我在给单位做IT战略规划的时候,正好能把知识用上(当时领导一般还没有开始MBA 培训),我按业务分类规划出:XX1管理信息系统.XX2管理信息系统,我们领导把它改成"XX1信息管理系统"."XX2信息管理系统".我当时费了好大劲给领导解释清楚,才把"信息管理系统"改回"管理信息系统

Spring MVC和Struts2的比较

前几天说起我们为什么要用Spring MVC?Spring MVC流行的根本原因是什么?Spring MVC是不是只是在处理ajax的请求更是方便而已,还有没有其他优点? 针对以上问题,我从网上查了些资料,比较了一下Spring MVC和Struts2的优劣: 1.核心控制器(前端控制器.预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生,核心控制器的主要用途是处理所有的请求,然后对那些特殊的请求 (控制器)统一的进行处理(字符编码.文件上传.参数接受.异常处理等等),SpringM

Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程

原创整理不易,转载请注明出处:Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程 代码下载地址:http://www.zuidaima.com/share/1778685765291008.htm 在<Struts2教程4:使用validate方法验证数据>中曾讲到使用validate方法来验证客户端提交的数据,但如果使用validate方法就会将验证代码和正常的逻辑代码混在一起,但这样做并不利于代码维护,而且也很难将过些代码用于其他程序的验证.在St

在完全由Spring管理的环境中使用Spring的Context获取Bean实例

在大型的应用中,常常会有很灵活的需求,而在使用了框架之后,虽然可以大大提高开发的效率,但同时,也把我们框到一个架子中了. 下面先说一下我遇到的问题,事情大概是这样的: @Component @Scope("prototype") public class Action1 implements Action{ ..... } @Component @Scope("prototype") public class Action2 implements Action{ .