引入动态表单DynaActionForm的目的在于减少ActionForm的数目。DynaActionForm和普通的ActionForm的用法基本相同。不同之处在于:普通的ActionForm类必须为每个属性提供getXxx和setXxx方法,以实现对属性的存取操作。而DynaActionForm类是将属性保存在一个HashMap类型的对象中,并同时提供相应的get(“属性名”),set(“属性名”,“属性值”)形式的存取方法。例如,要获取DynaActionForm中的name属性值,可以用下述的代码格式:
String name=(String)form.get(“name”);
需要注意的是:由于属性值最终存放在HashMap对象中,受其限制,动态AcionForm的get()方法返回值为Object类型,因此在使用时需要强制转换。由于DynaActionForm不需要重写validate()方法来实现表单验证,因此在引入动态ActionForm的同时,也引入了Validator验证框架以实现表单数据的动态验证。
Struts的Validator验证框架定义了常用的十几个验证规则,如:required(验证非空)、minlength(验证最小长度)、maxlength(验证最大长度)、intRange(验证整形范围)、email(验证电子邮件地址)、date(验证日期)等,并且实现了客户端的Javascript验证和服务器端验证,以下是在myeclipse环境下使用Validator验证框架的步骤:
一、 创建基于Struts的web工程
二、 将validator-rules.xml中以下代码拷贝到资源文件中
# Struts Validator Error Messages
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.
三、 将validator-rules.xml中以下代码拷贝到struts-config.xml配置文件中,验证框架将以插件形式被注入struts框架
具体示例代码如下:
Login.jsp
LoginAction.java
Struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="uploadForm" type="com.csu.struts.form.UploadForm" />
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorActionForm">
<form-property name="password" type="java.lang.String" />
<form-property name="name" type="java.lang.String" />
</form-bean>
</form-beans>
<global-exceptions /><global-forwards />
<action-mappings >
<action
attribute="uploadForm"
input="/upload.jsp"
name="uploadForm"
path="/upload"
scope="request"
type="com.csu.struts.action.UploadAction" />
<action
attribute="loginForm"
input="/form/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.csu.struts.action.LoginAction" />
</action-mappings>
<message-resources parameter="com.csu.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/>
</plug-in>
</struts-config>
本文介绍如何使用Struts框架中的DynaActionForm进行动态表单处理,并结合Validator插件实现表单验证。详细解释了DynaActionForm的用法及如何在MyEclipse环境中配置Validator验证框架。

被折叠的 条评论
为什么被折叠?



