由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. publicclassClearFieldErrorInterceptorextendsAbstractInterceptor{
  2. @Override
  3. publicStringintercept(ActionInvocationinvocation)throwsException{
  4. ActionSupportactionSupport=(ActionSupport)invocation.getAction();
  5. actionSupport.clearErrorsAndMessages();
  6. StringresultCode=invocation.invoke();
  7. returnresultCode;
  8. }
  9. 转自:http://hi.baidu.com/%BF%AA%CB%B3/blog/item/c09aca061884acc37a89475a.html
优质内容筛选与推荐>>
1、GitHub 如何基於 Node.js 和 Chromium 開發 Atom?
2、用VC实现将自绘图形输出为bmp文件
3、语义分割学习之SegNet的C++编译
4、笔记-计算机科学精粹
5、2018年东北农业大学春季校赛 wyh的矩阵


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号