动态ActionForm使用随笔

原创 2005年05月16日 11:11:00
接触Struts久了不免会对其有这样或那样的看法,前阶段潜心研究Struts,对其中的动态ActionForm的使用就有一些意见,在这里跟大家说道说道,希望大家能够给点意见。
一、用途
动态ActionForm与标准的Form的用途如出一辙,都是为了能够作为DTO(Data Transfer Object)对向来与Action做数据传递,所不同的是动态ActionForm并没有一个专门的类作为DTO对象的载体,取而代之的是在Struts配置文件FormBean中增加属性配置项,来达到与DTO对象相同的作用。下面我们以用户登陆的应用为例,讨论一下普通的ActionForm与动态ActionForm的区别。
用户通过输入用户名和密码后经过校验进入系统。过程描述的很简单,ActionForm设计起来也不复杂,我们只需要设定一下两个属性就可以了:
private String userID;
private String userPwd;
最后我们为着两个属性加上getset方法就完成了普通ActionForm的设计。如果需要的话,我们还可以在这个Formli覆盖validate()方法来对用户输入的信息进行简单的校验。
下面,我们就来看看动态ActionForm是通过怎样的设计来达到和上面同样的效果的吧!
我们在struts-config文件中的<form-bean>标签中定义我们的动态Form,代码如下。
<form-beans>
  <form-bean  name=”loginForm  type=”org.apache.struts.action.DynaActionForm”>
  <!----下面是设置Form的属性--- >
      <form-poperty  name=”userID  type=”java.lang.String”/>
      <form-poperty  name=”userPwdtype=”java.lang.String”/>
  </form-bean>
</form-beans>
这样便完成了一个动态ActionForm的定义,我们不需要定义getset方法来设置或者获得Form属性的值,我们只需要在我们的Action中使用:
String userID=(String)form.get(“userID”);
这样的方法获得Form中的数据,或者是通过
form.set(“userID”,”001318”);
这样的方法设置Form中的属性值。
从上面的论述不难看出两种ActionForm的用途与使用差别不是很大,都可以完成对视图的数据传递的作用。而从便捷角度来看动态FormBean显得优势明显,因为他的设计更为简单,而且由于具有可配置的优势,使其在实际操作方面显得跟为灵活!
二、差异
上面的论述能够突出动态ActionForm的优势,下面我们来看看动态ActionForm的“致命伤”。
1、  数据验证
细心的读者会发现我在提及普通的ActionForm的时候我曾经讲到过可以在ActionForm中的validate()方法对用户输入的信息进行简单的校验,而在动态ActionForm中却从未提到。这是因为如果想要实现动态ActionForm的校验我们必须做很多工作。首先我们必须引入Validator验证框架来帮助我们完成数据校验工作,其次由于某些数据的校验,我们还有可能为其编写数据校验项来帮助Validator框架完成数据校验工作。这与普通的ActionForm相比,动态ActionForm显得繁琐而笨拙。
2、  可配置
动态ActionForm的可配置型无疑是其存在优势之一,,但笔者发现,其可配置性的作用可谓捉襟见肘。因为可配置的FormBeanAction的耦合度还是相当大的。也就是说,由于Action类李引用了如“String userID=(String)form.get(“userID”);”这样的代码,那么当我们增加或删除Form中的属性的时候就必须更改我们的Action类,这与普通的ActionForm的作法是一样的,失去了其可配置的优势所在。
综上,笔者推荐使用普通的ActionForm去履行DTO的职责,因为那样会更方便解决应用问题。动态ActionForm只是一点小尝试,不推荐使用。以上官邸均属个人看法,不妥之处还望各位能够批评指正!

Struts中静态动态ActionForm的使用(一)

目录 登录例子 区别 时间属性 验证机制         在Struts1中,我们经常接触ActionForm为静态ActionForm。静态是指开发者在使用struts框架时...

Struts高级开发_动态ActionForm.avi

  • 2014年09月30日 12:41
  • 11.56MB
  • 下载

SSH:Struts1框架(动态ActionForm)

使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。  首先,如果ActionFo...

Struts旅程(三)Struts表单处理器ActionForm(静态动态)

上篇我们以登录为例讲解了struts配置,实现了使用struts框架进行登录的示例。一些名词已经在脑海中飘荡了。 ActionServlet:struts的控制器,负责截取URL或分发。提供Model...

Struts---- 动态ActionForm

1、动态ActionForm动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能* 在struts-confi...

动态ActionForm

在Struts框架中,ActionForm对象用来包装HTML表单数据,并能动态返回用于显示给用户的数据,自定义的ActionForm必需符合 JavaBean规范,并继承Struts的ActionF...

06-struts-动态ActionForm

1.ActionForm (1)继承org.apache.struts.action.ActionForm。(2)有getXXX()和setXXX()方法。(3)在将数据从ActionForm传递给A...
  • yyywyr
  • yyywyr
  • 2011年07月22日 09:33
  • 892

一口一口吃掉Struts(六)——动态ActionForm .

使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便。 但是,ActionForm也存在一些明显的不足: 1、如果ActionForm...

自学SSH框架之---struts(五):动态的ActionForm(DynaActionForm)

在一个大的项目里面,actionForm会很多,那么有没有什么方法避免actionForm的膨胀呢?有,那就是DynaActionForm,,它不用写actionForm类了(可以称为标准或者静态ac...

ActionForm中动态长度的List

转载自http://qingbo.net/blog/post322.html  某些情况下,一个表单中提交的内容数量是不一定的。比如Facebook的编辑照片界面,可以把整个相册的照片(最多60张)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态ActionForm使用随笔
举报原因:
原因补充:

(最多只允许输入30个字)