`

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数据输入验证教程详解

    本教程将深入讲解Struts2中的数据输入验证,包括两种主要验证方式:客户端验证和服务端验证。我们将重点讨论服务端验证,因为它在安全性方面更为可靠。 1. 服务端验证: 服务端验证主要通过重写Action类中的`...

    Struts2表单验证

    2. **重写validateXxx()方法**:为了解决特定业务逻辑的验证,可以在Action类中添加validateXxx()方法,其中Xxx对应Action的处理逻辑方法。比如,如果有login()和register()两个业务处理方法,可以分别创建...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_7_数据验证 共56页.pptx

    ### Java Struts2 数据验证详解 #### 课程背景与目标 在进行Java软件开发时,Struts2作为一款流行的Web应用程序框架,其丰富的功能和灵活的配置方式深受开发者喜爱。本教程旨在帮助初学者和有一定经验的开发者深入...

    Struts2数据校验与国际化

    在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...

    Struts2的输入校验

    此外,对于更复杂的校验规则,Struts2允许开发者通过覆盖Action类中的`validate()`方法或创建特定的`validateXxx()`方法来实现自定义校验。 在Struts2中,输入校验的流程如下: 1. 类型转换器:Struts2将接收到的...

    Struts2输入校验总结

    在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中重写`validate()`方法是最常见的做法。此方法允许开发者...

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

    6. 数据验证:Struts2提供了两种验证方式,即validate方法验证和validateXXX方法验证。还可以通过验证框架实现前台验证和自定义验证规则。 7. 转换器:用于处理数据类型转换的问题。Struts2提供了基于OGNL和Struts...

    struts1.2框架验证实例

    Struts1.2作为Apache组织的一员,提供了一种结构化的解决方案,用于简化Java Servlet和JSP的开发,使得开发者能够更好地分离业务逻辑、控制流程和视图。它的核心组成部分包括ActionForm、Action、Controller和配置...

    struts2讲义_吴峻申

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

    J2EE企业级项目开发-3期(KC007) 8.2 Struts之数据校验与国际化文档.doc

    无论是方法验证还是框架配置验证,Struts2的标签都会在表单提交后自动调用相应的验证机制,从而确保数据的准确性和完整性。如果验证失败,Struts2会自动将错误信息回显到页面,帮助用户更正输入。 总的来说,Struts...

    struts2笔记之校验表单信息

    在Struts2中,表单数据的校验是一个关键环节,用于确保用户提交的数据符合预期的格式和规则。本篇笔记将详细讲解Struts2中服务器端与客户端对表单数据的校验方式。 首先,Struts2提供了一系列内置的校验器,包括: ...

    struts2输入校验

    本文将深入探讨Struts2中的输入校验机制,包括如何重写validate方法、使用验证框架、客户端验证以及国际化信息的利用。 ### 一、重写validate方法 在Struts2中,如果希望自定义输入校验逻辑,可以继承`...

    struts2输入校验总结

    在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ### 一、手动输入校验 1. **普通处理方式**: - 在Action类中,你可以重写`validate()`方法,该方法会在业务逻辑...

    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--------------...

    输入校验之validateXXX方法校验

    在软件开发中,输入校验是一项至关重要的任务,它确保了程序接收到的数据是有效、安全且符合预期的。"validateXXX"方法是输入校验的一种常见实现方式,这里的"XXX"通常代表具体的校验规则或者字段名称。下面将详细...

    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_...

    struts2总结第二章

    Struts2是一个强大的MVC框架,它提供了许多功能来...无论是数据转换、文件上传还是业务逻辑的校验,Struts2都提供了一套完善的机制来支持。在实际开发中,根据需求灵活运用这些知识,可以提高开发效率并保证代码质量。

Global site tag (gtag.js) - Google Analytics