ActionForm
的要求
·必须扩展自org.apache.struts.action.ActionForm
·如果要获取表单的值,必须要定义一个public属性
·如果要求在将ActionForm传递到Action之前进行校验,必须实现validate方法
·如果想要在组装前初始化属性,必须实现reset方法
DynaActionForm
·举例说明DynaActionForm的配置
·DynaActionForm的使用
1、 动态ActionForm
·动态ActionForm是为了避免标准膨胀二设计的,使用动态ActionForm可以获得标准ActionForm的所有功能
<1>、在index.jsp文件中输入如下信息

Code
<li>测试动态ActionForm</li><br>
<form action="dyanactionform.do" method="post">
姓名:<input type="text" name="username"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="提交">
</form>
<2>、在struts-config.xml中配置

Code
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"/>
<form-property name="age" type="java.lang.Integer"/>
</form-bean>
<action-mappings>
<action path="/dyanactionform"
type="com.bjsxt.struts.DynaActionFormTestAction"
name="dynaForm"
scope="request"
>
<forward name="success" path="/dyna_actionform.jsp"/>
</action>
</struts-config>
<3>、建立DynaActionFormTestAction.java文件

Code
package com.bjsxt.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
/**
* 测试动态ActionForm
* @author Administrator
*
*/
public class DynaActionFormTestAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
/**
* 动态ActionForm收集的值放在map中
* 如:dynaValues {
* key="username"
* value="蒋海亮"
* key="age"
* value="20"
* }
*/
DynaActionForm daf = (DynaActionForm)form;
String username = (String)daf.get("username");
Integer age = (Integer)daf.get("age");
System.out.println("username=" + username);
System.out.println("age=" + age);
return mapping.findForward("success");
}
}
<4>、建立dyna_actionform.java文件,输出表单中的值

Code
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
用户名称:${dynaForm.map.username }<br>
年龄:${dynaForm.map.age }<br>
</body>
</html>