SSH:Struts1框架(动态ActionForm)

原创 2015年11月19日 15:48:29
使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。
 首先,如果ActionForm对应的HTML表单添加或删除一些属性,ActionForm类就可能需要修改并重新编译;
 其次,如果HTML表单是动态的,那么ActionForm更是无能为力了;
 另外,ActionForm增加了项目中类的绝对数量!
 于是从Struts1.1起,就引入了动态ActionForm(DyanActionForm)概念。动态ActionForm使得用户无须为应用程序的每一个HTML表单创建具体的ActionForm类。Struts框架包中的DyanActionForm类及其子类实现了动态ActionForm.
   DyanActionForm类扩展了 ActionForm类。用户可以直接使用DyanActionForm
   类,或者扩展该类以覆盖其validate和reset方法!
  配置动态ActionForm
   动态ActionForm支持在Struts配置文件中完成ActionForm的全部配置,无须编写
   任何额外的JAVA代码。以下为示例:
<!-- 动态FORM演示                        -->
      <form-bean name="dynaFormForm" type="org.apache.struts.action.DynaActionForm">
      <form-property name="userName" type="java.lang.String" />
      <form-property name="userPwd" type="java.lang.String" />
    </form-bean>
在上述代码中<form-bean>的type属性指定了使用Struts框架包中的DynaActionForm类,用户也可以扩展这个类,实现自定义的动态ActionForm。
在Action中访问动态ActionForm
同普通的ActionForm一样,Action类和JSP都可以访问动态ActionForm,而访问方式也基本一致。访问动态ActionForm与访问普通的ActionForm的最大区别在于对属性的访问方式不同。在标准的ActionForm中,针对每一个属性都提供了getter和setter方法来读取和设置属性,而DynaActionForm把所有的属性保存在一个Map 对象中,因此访问DyanActionForm中的属性与访问Map对象中的方法类似:
在这里我用上面配置的动态ActionForm来示例如何访问动态ActionForm
DynaActionForm dynaForm =(DynaActionForm)form;
        String userName = (String)dynaForm.get("userName");
        String userPwd = (String)dynaForm.getString("userPwd");
        //dynaForm.set("userName", "fengyan");设置值!

动态ActionForm的表单验证
DynaActionForm类的validate()方法没有提供任何默认的验证行为。可以通过定义扩展DynaActionForm类的子类,然后覆盖validate()方法,但是以编程方式来验证动态ActionForm并不是一种理想的办法。动态ActionForm的验证应该使用Struts的Validator验证插件。Validator插件允许采用特定的配置文件为动态的ActionForm配置验证规则,如检查必须的输入域,日期时间等 。
关于DynaActionForm的验证以及验证插件我将 写在下一笔记中!
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

创建oracle数据库流程

创建oracle数据库流程
  • swebin
  • swebin
  • 2015年04月17日 16:31
  • 728

Struts 1 之配置文件

web.xml中配置Struts的入口Servlet——ActionServlet,ActionServlet不负责任何的业务处理,它只是查找Action名单,找到path属性与URL属性一致的Act...

SSH:Struts1框架(ActionForm注册类型自动转换)

测试ActionForm注册类型自动转换  * 一般的数据类型都可以自动进行转换; * boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他清空转换成false ...

深入浅出学习Struts1框架(十一)-利用ActionMapping来创建ActionForm

今天主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping(这是前两篇文章中介绍的)之后,我们就要用利用Ac...
  • lfsf802
  • lfsf802
  • 2012年05月03日 10:02
  • 9057

深入浅出学习Struts1框架(十二)-把ActionForm的数据放到Mapping

上一篇博客主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping之后,我们就要用利用ActionMappin...
  • lfsf802
  • lfsf802
  • 2012年05月11日 11:00
  • 6128

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

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

Struts1 中 什么是动态ActionForm 与静态ActionForm

例子  在静态ActionForm中  jsp 表单

Struts1 ActionForm 工作原理

actionform工作原理 1.检查action映射,确定action的配置对应的actionform的映射 2.根据name属性查找formbean的配置信息 3.检查actio...

struts1 中ActionForm赋值原理

在struts1中,没有struts2封装得好,对简单数据类型没有什么不一样,但是对于一个对象,列表等要麻烦一点,不过只要知道struts1底层是怎么对数据进行赋值的话,操作起来也比较简单。  ...

SSH:Struts1框架(简介)

Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。S...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH:Struts1框架(动态ActionForm)
举报原因:
原因补充:

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