ActionForm

必须扩展自org.apache.struts.action.ActionForm

1、DynaActionForm:动态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(目标对象,源对象)方法进行对象值的复制。

5、DTO(data transfer object)=VO(view object)

posted on 2012-01-17 16:05 学+无止境 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/guaniu/archive/2012/01/17/2324769.html

ActionForm相关推荐

  1. Struts ActionForm简单理解

    要想明确struts的控制流程以及它核心API的实现原理(比方 Action/DispatchAction/ActionForm的实现原理),玩转struts1.2的关键就是可以玩转 ActionFo ...

  2. ActionForm类及表单数据验证

    在Struts的中央控制器中写了Struts的控制器角色,在这篇介绍下Struts的视图! Struts的视图组件: Struts框架中的视图组件主要包括: JSP页面. ActionForm类. S ...

  3. dwf怎么合成一个_将ActionForm拼合成一条插入和更新语句

    package chs.jhsyss.form; import java.lang.reflect.InvocationTargetException; import java.lang.reflec ...

  4. Struts中ActionForm的生命周期

    ActionForm有两种生命周期,一种是Request,另外一种是Session,经常使用的是Request,也就是ActionFom都是存在于一个Request中,也就是从一个客户请求开始到最终响 ...

  5. ActionForm与bean的区别

    Action 是处理事物的, ActionForm 是封装表单提交数据的 1.实体类User 应该是要建的 2.UserForm到不是一定要建,可以通过request得到所有值 3.UserForm是 ...

  6. 从struts2回到struts的学习--DynaActionForm(不用手写actionForm.java)

    使用DynaActionForm 2006年12月05日 星期二 下午 01:26 一个网站中会有许多的表单以供使用者填写资料,越大型的网站越需要更多的 ActionForm 物件来应付表单的取值,对 ...

  7. 【Struts】——ActionForm

    上篇示例中我们看到了ActionForm,这篇我们详细了解一下: ActionForm是用于封装用户的请求参数的.上篇我们也提到了:(在ActionForm中设置用到的数据,需和表单保持一致.因为提交 ...

  8. ActionForm中reset()的用法[转]

    ActionForm中reset()的用法- - 转自:[url] http://hi.baidu.com/fly_dream/blog/item/e4aaa0cc857f301100e92844.h ...

  9. Struts 中的ActionForm

    Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图: ① org.apache.struts.action包中 public abstract clas ...

最新文章

  1. oracle 伪列访问序列,Oracle数据库对象,同义词、序列、视图、索引
  2. Siamese-RPN目标跟踪算法
  3. 在线maven托管_使用Amazon s3托管您的Maven工件
  4. 阿里云首次在ASPLOS'19发布重磅论文:揭秘帮助ECS快速迭代的热升级技术
  5. vue实现对数据的增删改查(CURD)
  6. 使用SQL编程创建100万条数据测试索引
  7. 委托、事件--委托介绍篇
  8. 使用matlab计算并绘制连续信号的傅里叶变换
  9. c#实现Udp通信(四)--UPD大数据量接收(异步接收)
  10. 基于Android的太阳方位角计算工具
  11. 使用阿里云ECS搭建Nextcloud私有云服务器
  12. CTP接口开发案例(内附源码)
  13. android 工程模式mtk,Android L版本上user版本工程模式中gsensor校准失败
  14. 关于对接支付接口遇到的问题(微信和支付宝)
  15. C# 调用微信接口上传素材和发送图文消息
  16. 《Unity 5.x游戏开发实战》一1.9 添加一个水平面
  17. 听a16z讲安全:钱包的「非托管」谬论
  18. KaTex数学公式笔记
  19. 华为机考108题(c++)(41-51)
  20. Arduino IDE+_Attiny13/85实践(六)Attiny13A EEPROM内存读与写

热门文章

  1. uiswitchbutton 点击不改变状态_ES6专题—Generator与react状态机(14)
  2. 【java】大并发下Timeout waiting for connection from pool 解决方案
  3. 【Elasticsearch】十九种Elasticsearch字符串搜索方式
  4. 【Elasticsearch】 es kibana 安全实战
  5. 【java】高效压缩位图RoaringBitmap的原理与应用
  6. 【Flink】Flink Association with remote system akka Connection refused
  7. 【Kafka】Kafka ArithmeticException: / by zer
  8. hortonworks/registry : ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
  9. Spring : SpringBoot的ApplicationRunner和CommandLineRunner
  10. 【Hadoop】the short-cricuit local reads feature cannnot be use because UNIX Domain sockets are not ava