ActionForm总结

来源:互联网 发布:葫芦娃破解版软件 编辑:程序博客网 时间:2024/06/05 18:44

主要内容是:一般用法,动态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
动态ActionForm的验证,通常使用动态验证框架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取得上传文件数据,采用流输出,即完成上传,代码如下:

  UploadActionForm uaf=(UploadActionForm)form;

String title=uaf.getFiletitle();
FormFile ff=uaf.getUploadFile();

FileOutputStream fos=new FileOutputStream(new File("f:\\"+ff.getFileName()));
fos.write(ff.getFileData());
fos.close();
return mapping.findForward("success");
 * 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>
 
3、ActionForm类型的自动转换
* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false
* Date类型的转换:
* 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换
* 如果是java.util.Date,默认情况下struts无法转换,去看struts中ActionServlet中init方法中initOther的方法中对默认转换器的注册
* 自定义转换器的实现步骤
* 实现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中指定的类型

原创粉丝点击