本文转自 http://tsface.blog.51cto.com/2413882/774931
ActionForm Bean的基本应用
(一) 什么是ActionForm
ActionForm Bean就是Struts框架中的一个JavaBean,用来获取用户提交的Html表单中的数据。ActionForm在Struts框架中是一个非常重要的角色,它在把前台表单数据提交给Action处理前表单域封装成Bean对象。
自定义的ActionForm继承Struts框架的ActionForm基类org.apache.struts.action.ActionForm,其代码结构由三部分组成:
1、 属性对象对应的getter()、setter()方法
2、 validate()方法(可选)
3、 reset()方法(可选)
(二) 如何使用ActionForm
如果在Struts中要使用ActionForm的功能,那么自定义的ActionForm必须继承Struts框架的ActionForm基类,并有选择的重写validate()和reset()方法。
1、 重新ActionForm中的reset()方法,完成数据的初始化
reset()方法在把用户提交的表单数据封装成ActionForm前对域属性进行初始化。根据不同的用户请求的作用域不同,操作稍微有所不同。
当struts-config.xml中对应的<action>元素的scope属性为request时,用户的每个新请求都会创建新的实例,且实例创建后,就首先调用reset()方法进行属性的默认初始值设置。由于在创建ActionForm实例过程中,属性已经被初始化为默认值,因此就不用再调用reset()方法进行默认值设置,即该方法可以不重写或者只写一个空的方法体。
当scope属性为session时,同一个ActionForm实例会被某个用户的多个请求所共享,这时就必须重写reset()方法,手动设置属性的默认值。重写代码如下:
===========================================================
//重写的reset()方法:
- public void reset(ActionMapping mapping,HttpServletRequest request)
- {
- this.userName=null;
- this.userPassword=null;
- }
===========================================================
2、 重写ActionForm中的validate()方法,完成数据的有效性校验。
===========================================================
//重写的validate()方法:
- public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)
- {
- ActionErrors errors = new ActionErrors();
- if(userName=="")
- {
- errors.add("userNameError",new ActionMessage("nameNull"));
- }
- if(userPassword=="")
- {
- errors.add("userPassword",new ActionMessage("passwordNull"));
- }
- return errors;
- }
===========================================================
3、 修改struts-config.xml文件,使validate()方法生效。
===========================================================
//struts-config.xml文件中的配置:
- <action path="/login" name="loginForm" type="com.phome.struts1.action.LoginAction" validate="true" scope="request" input="/login.jsp">