文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>转!ActionForm 详解

转!ActionForm 详解

时间:2010-09-13  来源:jiahao0321

 

  1. 动态ActionForm的编写: 
  2. 动态ActionForm是为了避免过多的ActionForm类而设计的,使用动态ActionForm 
  3. 可以获得静态AcitonForm的所有好处;1、在Struts-config.xml定义动态AcitonForm 
  4. 如: 
  5.    <form-bean name="dynaUserActionForm" type="org.apache.struts.action.DynaActionForm"
  6.    <form-property name="name" type="java.lang.String"/> 
  7.    <form-property name="age" type="java.lang.Integer"/> 
  8.    </form-bean> 
  9. 2、在Action中使用的时候,需要强制转换为DynaActionForm类型,同时使用get方法来获取 
  10. 如: 
  11.      DynaActionForm dynaform = (DynaActionForm)form; 
  12.      String name = (String)dynaform.get("name"); 
  13.      Integer age = (Integer)dynaform.get("age"); 
  14.      
  15. 参考:DynaActionFormTestAction类 
  16. ---------------------------------------------------- 
  17. 上传文件: 
  18. 1、页面的action需要配置:enctype="multipart/form-data",如: 
  19.      <form action="upload.do" method="post" enctype="multipart/form-data"
  20.      标题:<input type="text" name="title"><br> 
  21.      文件名:<input type="file" name="myfile"><br> 
  22.      <input type="submit" value="上传"><br> 
  23.      </form> 
  24. 注意:method必须设置为post 
  25. 2、ActionForm中使用FormFile来接收文件 
  26. 3、在Action中调用FormFile即可取得上传文件的相关数据,完成上传 
  27. 参见:UploadAction类 
  28. 空字段的问题: 
  29. 如果页面没有写<input>,用jsp脚本在后台接收到的字符串为null,及空对象,如果用EL表达式,则为空串“” 
  30. 如果页面中有<input>,没有输入值,后台接收到的为空串“” 
  31. ---------------------------------------------------- 
  32. Struts对ActionForm类型的自动转换: 
  33. boolean: yes,y,1,true,on这些都可以转换为true类型,而且是忽略大小写的;其它情况会转换为false类型 
  34. Date类型的转换: 
  35. * 如果定义Date为: java.sql.Date类型,页面传递到后台的相应属性不能为空字符串,而且其格式 
  36.    必须是yyyy-MM-dd。 
  37. * 如果定义Date为:java.util.Date类型,默认情况下,struts无法转换此类型,我们需要定义 
  38.    自己的Converter来进行转换 
  39. ----------------------------------------------------Struts对ActionForm类型的自动转换过程: 
  40. 1、搜索request中的parameter 
  41. 2、把request中所有的参数名称和值(字符串类型)放到map中(key为参数名称,value为值) 
  42. 3、调用BeanUtils.setProperty方法,将map中的值逐个设置到ActionForm的数性上; 
  43.    *对于ActionForm中的每一个属性,根据属性的类型,调用相应的Converter 
  44.    *调用Converter的convert方法,将相应的字符串转换成ActionForm中指定的类型 
  45.    
  46. Converter的convert方法如下:   
  47. public Object convert(Class type, Object value) {} 
  48. 如果我们要转换为java.util.Date类型(即从一个字符串转换为java.util.Date类型),步骤如下: 
  49. 1、实现一个Converter 
  50. 2、将converter进行注册(通常用servlet注册,注意servlet标签中的<load-on-startup>标签的值必须大于等于0,web server在启动的 
  51.    时候才会调用servlet的init方法 ) 
  52. ---------------------------------------------------- 
  53. 我们可以通过BeanUtils.copyProperties(目标对象,源对象) 方法,在ActionForm对象和实体对象之间复制,避免过多的调用get/set方法 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载