ActionForm生命周期
ActionForm Bean从应用和配置的角度分为两类
动态ActionForm和静态ActionForm都是成对出现的。作用一样,只是实现不一样。
一.静态Form
由程序员手工编写Form
1.ActionForm
提交表单的字段名和form中的属性名一致。
2.ValidatorForm
用于验证框架的Form,在请求参数前,先使用验证框架验证。
在struts-config中对应的action标签的validate值为true。
3.ValidatorActionForm
二.动态Form
通过配置文件完成ActionForm配置
1.DynaActionForm
<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
</form-bean>
DynaActionForm lForm = (DynaActionForm)form;
String username = (String) lForm.get("username");
String password = (String) lForm.get("password");
System.out.println("username:"+username+"->"+password);
return mapping.findForward("success");
无法提供默认的验证行为。
2.DynaValidatorForm
和ValidatorForm一样在使用验证框架时使用。配置和DynaActionForm类似。
type="org.apache.struts.validator.DynaValidatorForm"
3.DynaValidatorActionForm
ValidatorActionForm和DynaValidatorActionForm也都是在使用验证框架时使用,和DynaValidatorForm及ValidatorForm不同的是,在配置validtion.xml中<form name=path>
name使用的是action的path属性值。以此来区分不同请求的验证规则。
三.还有一种特殊的Form ,LazyValidatorForm。
<form-bean name="loginForm" type="org.apache.struts.validator.LazyValidatorForm"></form-bean>
我们没有配置form的属性。所以在jsp页面中必须使用struts标签。
<br>基本使用方式<br>Customer Name:<html:text property="username"></html:text>
<br>Customer Code:<html:text property="usercode"></html:text>
<br>
<br>自动封装Map<br>国家:<html:text property="address(nation)"></html:text>
<br>省份:<html:text property="address(state)"></html:text>
<br>城市:<html:text property="address(city)"></html:text>
这样就可以直接进行验证框架和action中的取值。
LazyValidatorForm lz = (LazyValidatorForm)form;
String username = (String)lz.get("username");
String usercode = (String)lz.get("usercode");
System.out.println("name---" + username + " usercode---" + usercode);
Map m = (Map)lz.get("address");
System.out.println(m.get("nation"));
System.out.println(m.get("state"));
System.out.println(m.get("city"));
return null;