问题:
使用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中的数据输入验证,包括两种主要验证方式:客户端验证和服务端验证。我们将重点讨论服务端验证,因为它在安全性方面更为可靠。 1. 服务端验证: 服务端验证主要通过重写Action类中的`...
2. **重写validateXxx()方法**:为了解决特定业务逻辑的验证,可以在Action类中添加validateXxx()方法,其中Xxx对应Action的处理逻辑方法。比如,如果有login()和register()两个业务处理方法,可以分别创建...
### Java Struts2 数据验证详解 #### 课程背景与目标 在进行Java软件开发时,Struts2作为一款流行的Web应用程序框架,其丰富的功能和灵活的配置方式深受开发者喜爱。本教程旨在帮助初学者和有一定经验的开发者深入...
在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...
此外,对于更复杂的校验规则,Struts2允许开发者通过覆盖Action类中的`validate()`方法或创建特定的`validateXxx()`方法来实现自定义校验。 在Struts2中,输入校验的流程如下: 1. 类型转换器:Struts2将接收到的...
在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中重写`validate()`方法是最常见的做法。此方法允许开发者...
6. 数据验证:Struts2提供了两种验证方式,即validate方法验证和validateXXX方法验证。还可以通过验证框架实现前台验证和自定义验证规则。 7. 转换器:用于处理数据类型转换的问题。Struts2提供了基于OGNL和Struts...
Struts1.2作为Apache组织的一员,提供了一种结构化的解决方案,用于简化Java Servlet和JSP的开发,使得开发者能够更好地分离业务逻辑、控制流程和视图。它的核心组成部分包括ActionForm、Action、Controller和配置...
5.7 Struts2自定义标签实现图形验证功能 121 第6章 Struts2非JSP视图技术 125 6.1 velocity视图技术使用介绍 125 6.2 freemarker视图技术使用介绍 128 6.3 JasperReports报表视图技术使用介绍 130 第7章 Struts2类型...
无论是方法验证还是框架配置验证,Struts2的标签都会在表单提交后自动调用相应的验证机制,从而确保数据的准确性和完整性。如果验证失败,Struts2会自动将错误信息回显到页面,帮助用户更正输入。 总的来说,Struts...
在Struts2中,表单数据的校验是一个关键环节,用于确保用户提交的数据符合预期的格式和规则。本篇笔记将详细讲解Struts2中服务器端与客户端对表单数据的校验方式。 首先,Struts2提供了一系列内置的校验器,包括: ...
本文将深入探讨Struts2中的输入校验机制,包括如何重写validate方法、使用验证框架、客户端验证以及国际化信息的利用。 ### 一、重写validate方法 在Struts2中,如果希望自定义输入校验逻辑,可以继承`...
在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ### 一、手动输入校验 1. **普通处理方式**: - 在Action类中,你可以重写`validate()`方法,该方法会在业务逻辑...
1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...
struts2 最新的入门实例 我自己总结的 呵呵,欢迎提出宝贵的意见 1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp--------------...
在软件开发中,输入校验是一项至关重要的任务,它确保了程序接收到的数据是有效、安全且符合预期的。"validateXXX"方法是输入校验的一种常见实现方式,这里的"XXX"通常代表具体的校验规则或者字段名称。下面将详细...
1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...
1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp-------------------------------采用struts标签的登陆页面 login_struts_...
Struts2是一个强大的MVC框架,它提供了许多功能来...无论是数据转换、文件上传还是业务逻辑的校验,Struts2都提供了一套完善的机制来支持。在实际开发中,根据需求灵活运用这些知识,可以提高开发效率并保证代码质量。