浏览 1800 次
锁定老帖子 主题:深入理解ActionForm
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-15
最后修改:2009-02-17
* 动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以 得到标准ActionForm的所有功能 * 在struts-config.xml文件中定义动态ActionForm,如: <form-beans> <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="name" 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 name = (String)daf.get("name"); Integer age = (Integer)daf.get("age"); 动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值 动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}, 参见:dyan_actionform_success.jsp 动态Action的验证,通常使用动态验证框架validator ----------------------------------------------------------------------------------------------- 2、采用struts上传 * 页面中的配置如下: <form action="upload.do" method="post" enctype="multipart/form-data"> </form> * 在ActionForm中使用FormFile来接收上传的文件,参见:UploadActionForm.java * 在Action中调用FormFile取得上传文件数据,采用流输出,完成上传,参见:UploadTestAction.java 上传文件大小的设置:<controller maxFileSize="300M"/> 在接收页面如何获得上传文件的属性: ${ActionForm的id.FormFile的id.FormFile中封装的属性名} 参加:upload_success.jsp ----------------------------------------------------------------------------------------------- 3、测试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注册) 4、空字段问题 * 如果html没有写input输入域,jsp脚本接收到的值为null,el表达式则为空串 * 如果html中存在input输入域,没有输入值,那么jsp脚本和el表达式接收到的都是空串 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |