选择显示字体大小

学习jakarta struts 1.1 (二)

译者:fpwang

dynaactionform

  dynaactionform提供了一种方便的机制,从根本上消除了编写actionform的需要。dynaactionform可允许动态的表单属性。这意味着你能够在你的struts-config.xml文件中定义属性并且将表单类型设置为org.apache.struts.action.dynaactionform。什么都不需要写。dynaactionform使用apache公共项目中的dynabean完成这些操作。这一动态的行为是通过反射(reflection)与哈希图(hashmaps)提供的。

   dynaactionform是在struts-config.xml文件中使用<form-bean>与<form-property>标记定义的,如下所示:

<form-bean name=&quot;insertdynaform&quot; type=&quot;org.apache.struts.action.dynaactionform&quot;>
    <form-property name=&quot;artist&quot; type=&quot;java.lang.string&quot;/>
    <form-property name=&quot;title&quot; type=&quot;java.lang.string&quot;/>
    <form-property name=&quot;genre&quot; initial=&rdquo;dance&rdquo; type=&quot;java.lang.string&quot;/>
</form-bean>


   动态表单的属性与标准的actionform的属性类似。属性name是用于索引action中的表单bean,并且type用于指定实例化的类。当使用类dynaactionform时,<form-bean>的动态属性自动默认为真(true)。对于dynaactionform,要用<form-property>元素指定表单的所有属性。<form-property>元素中的name是指属性名称。type是指bean属性用java的实现类的类名。如果这个属性是索引类型的,可在type后添加&ldquo;[ ]&rdquo;。在上表中,你应该注意最后一个属性genre的<form-property>定义,我们设置了初始值(或叫 默认值)为&ldquo;dance&rdquo;。这个值也会在dynaactionform中reset()方法被调用时被作为默认值设置,并允许在表单中设置默认值的机制。如果在initial属性中没有指定任何值,那么所有原始类型的初值被设置为0,如果是对象则初值为null(空)。

   使用dynaactionform非常方便,主要的一个好处就是你只需写非常少的代码。就像其他表单一样,前面的代码例子是使用表单所需的全部代码。需要知道的一件事就是验证。当使用dynaactionform时,假定在某处进行了验证处理,这与actionform有些不同。你可以在自己的action中实现验证,但这是一个更好的方法。

   进行验证,可用dynavalidatorform或者dynavalidatoractionform,这两个类都在org.apache.struts.validator package包中。通过扩展dynaactionform,可以得到基于xml文件的基本值域的验证。验证是基于输入验证器的key。key是来自于struts-config.xml文件的name属性。它应当与validation.xml文件中的表单元素的name属性匹配。


多应用支持
  在struts 1.1中可以定义和支持多重的子应用。这意味着你能将你的应用放在更易维护的子应用中。你不再需要在唯一的struts-config.xml文件之外检测来源控制。

    另一个使用子应用的原因是根据客户而改变的控制流。在某些应用中,你可能有一些通用的页面,但是控制流也许会由于登陆应用的客户的不同而有所改变。你能把这个控制流的元数据存入数据库并生成web.xml文件(或该文件中的一部分),与不同的struts-config.xml文件一起。

   如果你曾对struts 1.x进行过开发,你可能注意到了许多web.xml文件中的元素已经移到了struts 1.1的struts-config.xml文件中。这是因为现在他们是应用特定(application-specific)的。多重的子应用通过在请求uri的相对于上下文部分开始的前缀来确定。如果没有应用前缀能够匹配,则选择默认配置。默认设置拥有一个空字符串的前缀。执行默认设置的这种方式对可能只定义一个应用的struts 1.0.x是向后兼容的。

   如果你拥有一个包含不同功能模块的大型应用,那么用协同运行的子应用代替一个巨大的应用会更有意义。下面所示的文件web.xml显示了如何定义子应用。
<!-- the default sub-application -->
<init-param>
   <param-name>config</param-name>
   <param-value>/web-inf/struts-config.xml</param-value>
</init-param>

<!-- the catalog sub-application -->
<init-param>
   <!-- catalog prefix -->
   <param-name>config/catalog</param-name>
   <param-value>/web-inf/struts-config-catalog.xml</param-value>
</init-param>

<!-- the sorter sub-application -->
<init-param>
   <!&mdash;sorter prefix -->
   <param-name>config/sorter</param-name>
   <param-value>/web-inf/struts-config-sorter.xml</param-value>
</init-param>

  当使用子应用时,你可能定义上下文相关的请求uri来指定使用哪一个子应用。例如,对表单的动作可能如下所示:

<html:form action=&quot;/logon&quot; >
引用了默认的子应用,或

<html:form action=&quot;/catalog/listcds&quot; >
引用catalog子应用的动作类。实际上你不必这么做。你可以在catalog子应用中用/listcds如果你想这么做。基本规则是:所有在1.0版本中上下文相关的struts-config.xml参数现在在1.1版本中是子应用前缀相关的。这样,在没有修改的情况下一个单一的应用既可以作为默认子应用也可作为指定的子应用。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons