06-struts-动态ActionForm
2011-07-22 09:33
471 查看
1.ActionForm
(1)继承org.apache.struts.action.ActionForm。
(2)有getXXX()和setXXX()方法。
(3)在将数据从ActionForm传递给Action之前,如需对数据进行校验,实现public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request)方法。
(4)如果需要在组装前对属性初始化,需实现public void reset(ActionMapping mapping, HttpServletRequest request) 。
2.动态的ActionForm
(1)出现的原因:对于大型的Struts应用程序,需编写多个ActionForm类,如果表单字段发送变化需重新修改和编译相关的ActionForm类。为了防止标准ActionForm的膨胀,动态的ActionForm产生了。从下可以看出,它是ActionForm的子类。
(2)示例动态ActionForm的用法
A:index.jsp页面
第一:数据收集的过程是通过DynaActionForm类收集的,如下:
dynaValues里面存放着对应的Key--Value对,比如 key=“name” value=“ss” key=“age” value=23。
第二:如何取值:
C:struts-config.xml文件
第一:<form-bean>的type属性是固定的,包名+类名(固定)。
第二:<form-property>的type属性是包装类型。
D:showDynaActionForm.jsp文件
第一:如何取到值,语法 ${dynabean.map.prop};
第二:此处的name和age必须和配置文件中的<form-property>的name属性名保持一致。
总结:
(1)动态ActionForm其实是把表单中的元素和值放到了map中,所以通过get(“。。。”)方法可以取出相应的值。
(2)动态ActionForm采用EL表达式的输出方式: ${dynabean.map.prop}。
(3)动态ActionForm通常使用动态验证框架validator进行验证。
(1)继承org.apache.struts.action.ActionForm。
(2)有getXXX()和setXXX()方法。
(3)在将数据从ActionForm传递给Action之前,如需对数据进行校验,实现public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request)方法。
(4)如果需要在组装前对属性初始化,需实现public void reset(ActionMapping mapping, HttpServletRequest request) 。
2.动态的ActionForm
(1)出现的原因:对于大型的Struts应用程序,需编写多个ActionForm类,如果表单字段发送变化需重新修改和编译相关的ActionForm类。为了防止标准ActionForm的膨胀,动态的ActionForm产生了。从下可以看出,它是ActionForm的子类。
public class DynaActionForm extends ActionForm implements DynaBean {}
(2)示例动态ActionForm的用法
A:index.jsp页面
<body> <h1>测试动态的ActionForm</h1> <hr/> <p>测试动态的ActionForm</p> <form action="dynaactionform.do" method="post"> 姓名:<input type="text" name="name"><br/> 年龄:<input type="text" name="age"/><br/> <input type="submit" value="提交"/> </form> </body>B:Action---TestDynaActionForm.java
package edu.tjpu.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 * @time 2011/7/22 */ public class TestDynaActionForm extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //类型转换 DynaActionForm daf=(DynaActionForm)form; //从HashMap中取值 String name=(String)daf.get("name"); Integer age=(Integer)daf.get("age"); return mapping.findForward("show"); } }说明:
第一:数据收集的过程是通过DynaActionForm类收集的,如下:
protected HashMap dynaValues = new HashMap();即从表单收集的数据以map的方式收集
dynaValues里面存放着对应的Key--Value对,比如 key=“name” value=“ss” key=“age” value=23。
第二:如何取值:
public Object get(String name) { // Return any non-null value for the specified property Object value = dynaValues.get(name); if (value != null) { return (value); } 。。。。。。 }从上可以看出,是通过get方法取值的。
C:struts-config.xml文件
<?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="name" type="java.lang.String"></form-property> <form-property name="age" type="java.lang.Integer"></form-property> </form-bean> </form-beans> <action-mappings> <action path="/dynaactionform" type="edu.tjpu.struts.TestDynaActionForm" name="dynaForm" scope="request" > <forward name="show" path="/showDynaActionForm.jsp"></forward> </action> </action-mappings> </struts-config>说明:
第一:<form-bean>的type属性是固定的,包名+类名(固定)。
第二:<form-property>的type属性是包装类型。
D:showDynaActionForm.jsp文件
</head> <body> <h1>取出动态ActionForm中的值</h1> 姓名:${dynaForm.map.name }<br/> 年龄:${dynaForm.map.age }<br/> </body>说明:
第一:如何取到值,语法 ${dynabean.map.prop};
第二:此处的name和age必须和配置文件中的<form-property>的name属性名保持一致。
总结:
(1)动态ActionForm其实是把表单中的元素和值放到了map中,所以通过get(“。。。”)方法可以取出相应的值。
(2)动态ActionForm采用EL表达式的输出方式: ${dynabean.map.prop}。
(3)动态ActionForm通常使用动态验证框架validator进行验证。
相关文章推荐
- struts中动态表单(DynaActionForm)的使用(超简单例子)
- Struts的动态ActionForm(DynaActionForm)
- 自学SSH框架之---struts(五):动态的ActionForm(DynaActionForm)
- Struts 动态actionForm的使用
- 2.Struts访问受保护的页面,动态ActionForward:ActionForm
- 保持struts-config.xml不变,将动态Form org.apache.struts.action.DynaActionForm转化成ActionForm的例子
- (Struts)动态ActionForm(转)
- 一口一口吃掉Struts(六)——动态ActionForm
- 一口一口吃掉Struts(六)——动态ActionForm
- Struts中动态ActionForm与静态ActionForm有什么区别?
- Struts旅程(三)Struts表单处理器ActionForm(静态动态)
- 一口一口吃掉Struts(六)——动态ActionForm .
- struts1——静态ActionForm与动态ActionForm
- struts之DynaActionform动态表单创建
- SSH:Struts1框架(动态ActionForm)
- 动态ActionForm、struts上传文件、自定义ActionForm的类型转换、Struts对ActionForm的自动搜集流程
- Struts旅程(三)Struts表单处理器ActionForm(静态动态)
- Struts1 中 什么是动态ActionForm 与静态ActionForm