SSH:Struts1框架(动态ActionForm)
2015-11-19 15:48
330 查看
使用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的验证以及验证插件我将 写在下一笔记中!
首先,如果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的验证以及验证插件我将 写在下一笔记中!
相关文章推荐
- 我是运营,我没有假期
- JQuery+Strusts1.x无刷新登录
- 在线用表单建立文件夹
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- Jquery 表单取值赋值的一些基本操作
- 插件管理框架 for Delphi(一)
- 修复mysql数据库
- 浅析SQL数据操作语句
- SQLServer 数据导入导出的几种方法小结
- MySQL数据备份之mysqldump的使用详解
- C#实现窗体间传递数据实例
- 使用CSS框架布局的缺点和优点小结
- 给你的数据库文件减肥
- Oracle数据更改后出错的解决方法
- Oracle数据库数据丢失恢复的几种方法总结
- javascript 表单的友好用户体现
- js 提交和设置表单的值
- C#将Sql数据保存到Excel文件中的方法