`

动态ActionForm

阅读更多

1、动态ActionForm
动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准
ActionForm的所有功能
* 在struts-config.xml文件中定义动态ActionForm,如:
<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>
</form-beans>
*在Action中使用动态ActionForm,参见DynaActionFormTestAction.java
DynaActionForm daf = (DynaActionForm)form;
String username = (String)daf.get("username");
Integer age = (Integer)daf.get("age");

动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值
动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}, 参见:dyna_actionform.jsp
动态Action的验证,通常使用动态验证框架validator

2、采用struts上传文件
* 页面的配置,如:
<form action="upload.do" method="post" enctype="multipart/form-data">
  标题:<input type="text" name="title"><br>
  文件:<input type="file" name="myfile"><br>
  <input type="submit" value="提交">
  </form>
* ActionForm中使用FormFile来接收上传的文件,参见:UploadActionForm.java
* 在Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,参见:UploadTestAction.java
* 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>

3、空字段测试
* 在表单中没有input输入域,jsp脚本接收到的值为null,el表达式接收到的值为空串
* 如果表单中的值,没有输入,那么jsp脚本和el表达式接收到的值都为空串

4、测试ActionForm类型的自动转换
* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false
* Date类型的转换:
* 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换
* 如果是java.util.Date,默认情况下struts无法转换

* 自定义转换器的实现步骤
* 实现converter接口,实现convert方法
* 将实现的conerter注册,通常情况采用servlet注册
* 采用servlet注册需要注意标签的配置,<load-on-startup>10</load-on-startup>(也可以采用struts plugin注册)

Struts对ActionForm的自动搜集过程:
  * 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value值
  * 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性
    根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型
   
可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。

分享到:
评论

相关推荐

    Struts高级开发_动态ActionForm.avi

    动态ActionForm则旨在解决这个问题,它允许我们在运行时动态地创建和绑定ActionForm,而不是预先定义固定的ActionForm类。 在讲解动态ActionForm的过程中,通常会涵盖以下几个关键点: 1. **ActionForm接口**:...

    struts课堂资料\第五章(动态ActionForm与控制器)

    在"第五章(动态ActionForm与控制器)"的课堂资料中,我们将深入理解Struts框架中的关键概念,特别是ActionForm和控制器的动态使用。 一、ActionForm类 ActionForm是Struts框架中的表单bean类,用于接收用户在JSP页面...

    struts课堂资料\第五章(动态ActionForm与控制器)2

    在Struts的第五章,我们主要探讨的是动态ActionForm和控制器的相关概念及其应用。 **动态ActionForm**:在传统的Struts应用中,ActionForm类用于在Controller层和View层之间传递数据。每个表单通常对应一个...

    struts中配置动态ActionForm

    最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助...在此谢谢各位!!

    struts_进阶

    #### 一、Struts框架简介与动态ActionForm概念 Struts是一个基于Java EE的MVC(Model-View-Controller)框架,它为Web应用程序提供了一个结构化的解决方案。在Struts框架中,ActionForm对象扮演着极其重要的角色...

    Struts1 控制器组件和动态表单详解

    本篇将深入探讨Struts1的控制器组件以及动态ActionForm的概念。 **Struts1控制器组件** 1. **ActionServlet组件**: ActionServlet是Struts1框架的中心控制器。它接收HTTP请求,通过doGet或doPost方法处理这些请求...

    struts例子struts例子

    在本文中,我们将深入探讨Struts的一些关键概念,如ActionForm、动态ActionForm、DispatchAction以及Validator验证框架。 ActionForm是Struts框架中用于接收用户输入并传递给Action处理的关键组件。它存储了HTTP...

    Struts_学习笔记之ActionForm

    DynaActionForm继承自ActionForm,提供了动态Bean的功能,而ValidatorForm继承自ActionForm,提供了表单验证功能。 2. ActionForm的方法 ActionForm提供了两个重要的方法:reset()和validate()。reset()方法用于...

    struts课件2

    本课件主要涵盖了Struts框架中的几个关键概念和技术,包括Validator框架、国际化支持、不同类型的DispatcherAction、动态ActionForm以及如何处理表单的重复提交等问题。以下是针对这些知识点的详细解释。 #### 二、...

    Struts高级部分(2)(常用Action、验证框架、动态Form)笔记

    本章主要讨论Struts框架中的高级特性,包括常用Action的使用、动态ActionForm以及验证框架。 首先,我们来看看Struts中的两种常用Action: 1. **ForwardAction**: ForwardAction的作用是定义一个逻辑路径到具体的...

    STRUTS开发笔记(anifo总工程师安坤原创))

    动态ActionForm允许开发者根据需要动态地创建ActionForm对象,这有助于减少代码重复并提高代码的灵活性。 **4.2 动态ActionForm的数据验证** 对于动态ActionForm,同样可以通过配置文件来定义其数据验证规则。 **...

    跃达创新struts 笔记

    2. 动态ActionForm:在Struts中,ActionForm对象用于封装HTTP请求中的参数,动态ActionForm可以根据不同的请求创建不同的表单类。 3. ActionServlet:作为Struts的核心,ActionServlet负责拦截所有请求,解析请求...

    三层架构及反射工厂,数据库连接

    2. 开发Struts项目,建议用动态ActionForm+Validateor,以及DispatchAction,其他什么Action几乎就别用了。 3. 不管开发项目的时候发生什么,千万别动框架。 4. 框架搭建好后把不需要的JAR去掉。 5. 测试项目的时候去...

    eclipse struts简单实例2

    最后,为了演示动态ActionForm,我们可以创建一个新的`LoginAction2`类,同时在`struts-config.xml`中配置这个新的Action和ActionForm。这展示了Struts如何支持多个Action处理同一表单的不同行为。 总结一下,本...

    整合Struts_Hibernate_Spring应用开发详解

    - **使用动态ActionForm:** 动态ActionForm可以根据用户请求动态生成表单字段。 - **Struts的数据校验** - **ActionForm的代码校验:** 通过重写`validate()`方法实现。 - **Action的代码校验:** 直接在Action...

    Struts+Hibernate的高级功能

    动态ActionForm允许在运行时动态地创建和配置ActionForm,提高了代码的复用性和灵活性。 4. **Validator验证框架**:Validator框架是Struts的一个插件,用于验证用户输入的数据。它可以自定义验证规则,并在提交...

    采购员子系统开发案例精品

    - **实现方式**:在Struts配置文件`struts-config.xml`中,通过指定`&lt;form-bean&gt;`的`type`属性值为`org.apache.struts.action.DynaActionForm`来创建动态ActionForm。此类能够在内部Map中存储数据。 #### 三、采购...

    ActionForm里的get和set方法

    在Java Web开发中,Struts框架是一个非常流行的MVC(Model-View-Controller)架构,它简化了构建基于JSP的动态网站应用的过程。ActionForm是Struts框架中一个关键的组件,它充当了Controller与Model之间的桥梁,负责...

Global site tag (gtag.js) - Google Analytics