Struts的动态表单的应用

原创 2003年07月23日 15:40:00

Struts的动态表单的应用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

原文连接:http://www.developer.com/java/web/article.php/2214681

By James M. Turner

 

这篇文章以实例代码来阐述Dynaformsstruts1.1种的引用——译者注

 

如果你使用过struts先前的版本,你就会注意到你需要花费大量的时候来写ActionForm类文件,而这些类文件对于struts都是非常关键的(它充当“View”的一部分),通常它的结构就是bean properties在加上一个validate方法(有时还有reset方法)。

随着struts1.1版本的推出,开发员有了另外一种方法来完成前面的任务:使用DynaBeansDynaBeans动态生成Java Beans。这就意味着我们可以通过配置(通常利用xml

来生成formbean而不是在formbean中硬编码。

为了了解DynaBeansstruts中为Dynaforms)是如何工做的,让我们看一个简单的表单,字段有:nameaddresstelephone等,下面的代码为通常的写法(没有使用Dynaforms)。

 

article1.CustomerForm

 

 

看到上边的写法(这么长一段代码[虽然大多的工具都可以自动生成setget方法]感想如何?如果要为每一个表单配备一个formbean,那么将是一件多了令人痛苦的事情——译者注),你知道了它是一个标准的JavaBean,只是多了一个validate方法,validate方法确保client断的输入都是合法的。

 

相应的jsp页面同样也是很简单的,如下:

 

customer.jsp

 

 

相应的action也没有复杂的业务代码,只是将从client端传过来的值打印到控制台。

article1.AddCustomerAction

 

 

下面看看struts-config.xml的配置,struts利用该配置文件将上述文件联系到一起来协同完成任务。

 

 

上边通过配置,customerForm来引用CustemerForm类, /addCustomeraction使用customerForm并且触发article1.AddCustomerAction来处理请求。

 

下图添加customer空表单图片

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-7-231454110.gif

如果什么也没有填就提交了,将会出现下图的反馈信息:

 

CSDN_Dev_Image_2003-7-231454112.gif

如果你所有输入的信息都合法,那么在控制台你可以看到如下类似的信息:

 

 

 

到现在为止,上边代码熟悉struts得都应该很熟悉但是,如果应用struts1.1的新特性,你将会用更少的代码来完成上述同样的功能。使用Dynaforms,我们应该更改customerFormstruts-config.xml中信息来使用org.apache.struts.action.DynaActionForm (为了便于读者比较使用前后的差别,我们将使用新的类新的jsp页面来完成同样的功能)

 

使用DynaActionForm,你可以利用form-property xml标签,它允许你在struts-config.xml中定义formbean的属性元素。以我们的例子来说,struts-config.xml中将是如下这个样子:

 

     上边的改动对于jsp页面没有任何的影响。不过你要对于原来的action进行稍微的改动应为:你现在已经不在向execute()中传递formbean(没有get set方法),所以 你应该把form转型到DynaActionForm,然后利用方法get(filename)来取得client端数据新的action代码如下

 

article1.AddDynaCustomerAction

 

从上边的代码可以看出,似乎”屏蔽“了actionform,然而我们也“丢失”了一些其他的,譬如:严整输入合法性的问题。有两种方法可以恢复校验功能:一是创建一个DynaActionForm的子类,然后在子类中实现validate()方法。如下代码:

 

article1.DynaCustomerForm

如果是这样,我们就要更改struts-config.xml来使用DynaActionForm的子类,这样的效果似乎是又回到了先前的样子(为每一个表单写DynaActionForm),呵呵。。。

所以推荐的做法是使用struts1.1种的Validator Framework,这方面的内容在以后的文章中在说明。

 

关于作者:

 

James Turner is the owner and manager of Black Bear Software, LLC, which specializes in custom Java-based e-Commerce and CRM solutions delivery. He is also the author of "MySQL and JSP Web Applications: Data-Driven Programming Using Tomcat and MySQL" (ISBN: 0672323095) and is the co-author of "Struts: Kick Start" (ISBN: 0672324725), which will be published in November. He can be reached at turner@blackbear.com.

 

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

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

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

目录 登录例子 区别 时间属性 验证机制         在Struts1中,我们经常接触ActionForm为静态ActionForm。静态是指开发者在使用struts框架时...
  • llhhyy1989
  • llhhyy1989
  • 2013年02月18日 11:31
  • 2713

Struts动态表单的创建

一.在struts中如何实现动态表单的创建 (1)第一步:创建一个简单的注册页面: u: p: (2)第二步:在struts-conf...
  • u010870518
  • u010870518
  • 2014年09月25日 13:55
  • 1807

Struts1.2动态表单注册 验证实例(2)

  • 2007年10月07日 20:15
  • 1.18MB
  • 下载

Struts动态表单的创建

一.在struts中如何实现动态表单的创建 (1)第一步:创建一个简单的注册页面: u: p: (2)第二步:在struts-conf...
  • u010870518
  • u010870518
  • 2014年09月25日 13:55
  • 1807

struts2中一个表单中提交多个请求(动态调用方法)

在很多Web应用中,为了完成不同的工作,一个HTML form标签中可能有两个或多个submit按钮,Struts2中提供了另外一种方法,使得无需要配置可以在同一个action类中执行不同的方法(默认...
  • tuke_tuke
  • tuke_tuke
  • 2015年09月26日 12:48
  • 911

jqGrid与Struts2的结合应用(十) —— 真正的自定义表单查询

原文地址:http://blog.csdn.net/gengv/article/details/5758321 如果原文禁止转载,请联系博主,我会马上删除 关于这个问题,我在网上搜了一下,...
  • johnstrive
  • johnstrive
  • 2014年12月18日 22:58
  • 1143

jqGrid与Struts2的结合应用(十) —— 真正的自定义表单查询

在网上搜了一下,大多都是引用jqGrid的文档中的filterGrid方法。但这个方法不是真正意义的自定义查询。这篇文章主要讲述一下真正意义的自定义查询,顺便简单聊聊jqGrid源码中查询的实现方法。...
  • xsj34567
  • xsj34567
  • 2012年06月11日 14:01
  • 2397

jqGrid与Struts2的结合应用(十) ------ 真正的自定义表单查询 .

关于这个问题,我在网上搜了一下,大多都是引用jqGrid的文档中的filterGrid方法。但这个方法不是真正意义的自定义查询。 这篇文章主要讲述一下真正意义的自定义查询,顺便简单聊聊jqGri...
  • nusoftyu
  • nusoftyu
  • 2012年03月16日 15:17
  • 676

jqGrid与Struts2的结合应用(三) ------ 使用自定义表单对话框编辑Grid数据 .

上一篇中的最后一点提到了,如果在服务器端出现异常,没能完成预期的操作,那么客户端(浏览器)中的jqGrid还继续更新数据吗? 这一篇就来说说服务器端的操作。 首先看一下服务器端的代码,我将...
  • nusoftyu
  • nusoftyu
  • 2012年03月16日 14:15
  • 790
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts的动态表单的应用
举报原因:
原因补充:

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