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)
转载于:https://www.cnblogs.com/guaniu/archive/2012/01/17/2324769.html
ActionForm相关推荐
- Struts ActionForm简单理解
要想明确struts的控制流程以及它核心API的实现原理(比方 Action/DispatchAction/ActionForm的实现原理),玩转struts1.2的关键就是可以玩转 ActionFo ...
- ActionForm类及表单数据验证
在Struts的中央控制器中写了Struts的控制器角色,在这篇介绍下Struts的视图! Struts的视图组件: Struts框架中的视图组件主要包括: JSP页面. ActionForm类. S ...
- dwf怎么合成一个_将ActionForm拼合成一条插入和更新语句
package chs.jhsyss.form; import java.lang.reflect.InvocationTargetException; import java.lang.reflec ...
- Struts中ActionForm的生命周期
ActionForm有两种生命周期,一种是Request,另外一种是Session,经常使用的是Request,也就是ActionFom都是存在于一个Request中,也就是从一个客户请求开始到最终响 ...
- ActionForm与bean的区别
Action 是处理事物的, ActionForm 是封装表单提交数据的 1.实体类User 应该是要建的 2.UserForm到不是一定要建,可以通过request得到所有值 3.UserForm是 ...
- 从struts2回到struts的学习--DynaActionForm(不用手写actionForm.java)
使用DynaActionForm 2006年12月05日 星期二 下午 01:26 一个网站中会有许多的表单以供使用者填写资料,越大型的网站越需要更多的 ActionForm 物件来应付表单的取值,对 ...
- 【Struts】——ActionForm
上篇示例中我们看到了ActionForm,这篇我们详细了解一下: ActionForm是用于封装用户的请求参数的.上篇我们也提到了:(在ActionForm中设置用到的数据,需和表单保持一致.因为提交 ...
- ActionForm中reset()的用法[转]
ActionForm中reset()的用法- - 转自:[url] http://hi.baidu.com/fly_dream/blog/item/e4aaa0cc857f301100e92844.h ...
- Struts 中的ActionForm
Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图: ① org.apache.struts.action包中 public abstract clas ...
最新文章
- oracle 伪列访问序列,Oracle数据库对象,同义词、序列、视图、索引
- Siamese-RPN目标跟踪算法
- 在线maven托管_使用Amazon s3托管您的Maven工件
- 阿里云首次在ASPLOS'19发布重磅论文:揭秘帮助ECS快速迭代的热升级技术
- vue实现对数据的增删改查(CURD)
- 使用SQL编程创建100万条数据测试索引
- 委托、事件--委托介绍篇
- 使用matlab计算并绘制连续信号的傅里叶变换
- c#实现Udp通信(四)--UPD大数据量接收(异步接收)
- 基于Android的太阳方位角计算工具
- 使用阿里云ECS搭建Nextcloud私有云服务器
- CTP接口开发案例(内附源码)
- android 工程模式mtk,Android L版本上user版本工程模式中gsensor校准失败
- 关于对接支付接口遇到的问题(微信和支付宝)
- C# 调用微信接口上传素材和发送图文消息
- 《Unity 5.x游戏开发实战》一1.9 添加一个水平面
- 听a16z讲安全:钱包的「非托管」谬论
- KaTex数学公式笔记
- 华为机考108题(c++)(41-51)
- Arduino IDE+_Attiny13/85实践(六)Attiny13A EEPROM内存读与写
热门文章
- uiswitchbutton 点击不改变状态_ES6专题—Generator与react状态机(14)
- 【java】大并发下Timeout waiting for connection from pool 解决方案
- 【Elasticsearch】十九种Elasticsearch字符串搜索方式
- 【Elasticsearch】 es kibana 安全实战
- 【java】高效压缩位图RoaringBitmap的原理与应用
- 【Flink】Flink Association with remote system akka Connection refused
- 【Kafka】Kafka ArithmeticException: / by zer
- hortonworks/registry : ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
- Spring : SpringBoot的ApplicationRunner和CommandLineRunner
- 【Hadoop】the short-cricuit local reads feature cannnot be use because UNIX Domain sockets are not ava