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的验证以及验证插件我将 写在下一笔记中!
版权声明:本文为博主原创文章,未经博主允许不得转载。

strust中Action类和ActionForm类的基本用法

这里用一个最简单的登录页面演示,一个LoginForm,一个LoginAction。   LoginForm如下: ----------------------------------------...
  • xzf19901108
  • xzf19901108
  • 2012年07月03日 10:48
  • 1664

Struts1的静态表单和动态表单

原文:http://www.jspcn.net/htmlnews/200250157.html如果你使用过struts先前的版本,你就会注意到你需要花费大量的时候来写ActionForm类文件,而这些...
  • x_yp
  • x_yp
  • 2010年12月30日 11:25
  • 933

Action的自定义方法

Action的自定义方法调用方式: 1. 在struts.xml文件中通过method属性指定方法名 2. 使用动态方法调用方式(DMI) 3. 使用提交按钮的method属性 4. 使用通配...
  • sunshinebob
  • sunshinebob
  • 2017年09月26日 12:17
  • 30

ActionForm类及表单数据验证

在Struts的中央控制器中写了Struts的控制器角色,在这篇介绍下Struts的视图! Struts的视图组件: Struts框架中的视图组件主要包括: JSP页面。 ActionForm...
  • toto1297488504
  • toto1297488504
  • 2012年12月27日 21:44
  • 1366

使用动态ActionForm-DynaActionForm(原理)

在Struts框架中,ActionForm对象用来包装HTML表单数据,并能动态返回用于显示给用户的数据,自定义的ActionForm必需符合JavaBean规范,并继承Struts的ActionFo...
  • wucuilan827
  • wucuilan827
  • 2007年04月16日 15:50
  • 1637

struts1.x中ActionForm的作用

一:通常是用来取网页中html标签的值,概念性的东西就不说了。通常就是ActionForm中设置变量属性和相应得getset方法。之后再action中调用actionFrom得到页面的值。我们只需写好...
  • wangzihu
  • wangzihu
  • 2012年05月06日 16:11
  • 6662

java开发自定义表单功能类:FormUtil

直接看代码:其中setChecked设置复选框状态的,setSelected是设置下拉框选择项。GetFormField用于生成form表单,目前支持的有:文本框,下拉框,单选,复选,段落,图片,日期...
  • cctcc
  • cctcc
  • 2015年12月14日 22:10
  • 3380

表单的自定义按钮提交

大家都知道了表单的自带submit按钮提交但是是否知道自定义按钮提交呢?还有超链接提交方式呢?? 下面我就为大家直接开撸: 1、表单提交方式 * 使用submit提交 ..... ...
  • a_lonely_dancer
  • a_lonely_dancer
  • 2016年09月05日 01:51
  • 3156

Struts1 页面提交到ActionForm,form为null

分析:既然知道form为null,说明,能够进入到action里面去,为什么为空呢?可能性最大的一个原因,就是:formbean没有和struts中的action配置文件关联起来。1、检查,strut...
  • qwdafedv
  • qwdafedv
  • 2015年07月31日 15:46
  • 2014

struts1的actionform

Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图:     ① org.apache.struts.action包中 public ...
  • huihui870311
  • huihui870311
  • 2016年03月31日 08:42
  • 207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH:Struts1框架(动态ActionForm)
举报原因:
原因补充:

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