`

struts2 + spring 关于validateXXX()验证失败后保存Form中数据的解决方案

阅读更多
问题:
    使用struts2的validateXXX()进行验证,出错后自动返回之前的画面,但是Form中的数据全部丢失了,如何才能保存出错前的Form是要解决的问题。

调查:
    调查后发现如果把Action的scope设置成session就应该可以在session范围内保存Form数据,但是struts2不支持直接设定Action的scope属性,没关系,有办法,因为把bean的注入交给了spring容器,spring自然可以管理它自己的bean,只需要在spring的配置文件中定义Action的bean的时候把scope设置为session就可以了。
    如果在spring中定义bean时指定scope为session,那么请小心使用struts2的Action中的validateXXX()方法,因为校验出错的状态会一直保存直到session结束(当然这是因为struts2的默认拦截器在作怪)。

解决方案:
STEP 1:
    定义bean的作用域为session (注1)
    例:  <bean id="LoginAction" class="testLogin.action" scope="session">
                <property name....../>
          </bean>
STEP 2.
    因为校验的错误状态ActionError会在session范围内保存,导致每次的Action请求会直接跳转到input视图。以下准备了两种解决办法
    ①重写默认的负责校验的拦截器。
    ②放弃使用validateXXX()这个方法,在Action中进行校验,使用ActionMessage代替ActionError。

注1:同时不要忘记在web.xml中追加一个监听。
    <listener>
        <listener-class>
                org.springframework.web.context.request.RequestContexgListener
        </listener-class>
    </listener>

ok,到此为止问题已经解决,需要说明的是,解决问题的办法并不只是这一种,根据具体情况可以采用不同的方法,例如通过hidden项目传递Form就是一种不错的方法。
分享到:
评论

相关推荐

    struts2_validate

    Struts2验证应该包括验证器(需要xml配置)和Action中的validate()验证方法两种。后者很简单,只需要把 验证条件加进去就可以啦!

    struts2讲义_吴峻申

    5.7 Struts2自定义标签实现图形验证功能 121 第6章 Struts2非JSP视图技术 125 6.1 velocity视图技术使用介绍 125 6.2 freemarker视图技术使用介绍 128 6.3 JasperReports报表视图技术使用介绍 130 第7章 Struts2类型...

    Struts2数据校验与国际化

    Struts2数据校验与国际化,有validate()方法校验,有validateXxx()方法校验,有配置文件校验;国际化:有英,香港,内地

    struts2入门实例2 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    struts2入门实例1

    struts2 最新的入门实例 我自己总结的 呵呵,欢迎提出宝贵的意见 1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp--------------...

    struts2入门实例4 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    struts2入门实例3 经典入门必备

    1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...

    Java struts2 validate用户登录校验功能实现

    主要为大家详细介绍了Java struts2 validate用户登录校验功能实现的具体步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    输入校验之validateXXX方法校验

    输入校验之validateXXX方法校验的一个例子

    AnyFo - Struts 2_1爆胎易筋丸.pdf

    5 数据验证...........................................................................................................................14 5.1 validate 方法验证..............................................

Global site tag (gtag.js) - Google Analytics