9) form-property标记
form-property标记用于定义动态的FormBean的表单属性,动态FormBean可以使您在Struts的配置文件当中(而不是具体的类当中)定义表单的属性.如果包含的form-bean标记的type属性不是org.apache.struts.action.DynaActionForm或者其子类,则将忽略此标记.
属性 | 说明 | 必需 |
className | 指定该属性要使用的FormPropertyConfig子类的全限定类名,默认名称为org.apache.struts.config.FormPropertyConfig | 否 |
initial | 指定属性的初始值.如果没有指定,属性的值将被初始化为0,对象将由其默认构造函数进行初始化(因此,String将初始化为””) | 否 |
name | 指定属性的名称 | 是 |
size | 指定当type属性指定一个数组并且initial属性被省略时要创建的数组的大小. | 否 |
type | 指定属性的底层字段的全限定类名.此外[]可以追加到类型声明中以表示该字段的索引(比如说,java.lang.Strin[]) | 是 |
<form-beans>
<form-bean name=”logonForm”
type=”org.apache.struts.action.DynaActionForm”>
<form-property name=”username”
typ=”java.lang.String”/>
<form-property name=”password”
type=”java.lang.String”/>
</form-bean>
</form-beans>
不需要为FormBean定义指定具体类,您只需要将其类型设置为org.apache.struts.action.DynaActionForm或者其子类,然后使用form-property标记列出它的各个属性.
10) forward标记
forward标记用于定义URL的逻辑名称,这样,代码等可以引用逻辑名称而无需引用URL本身.
使用forward标记有两种方法:
① 通过在global-forwards标记中包含forward标记来定义全局forward.所有操作都可以访问全局forward.
② 通过在action标记下嵌套forward标记来定义特定操作的forward.特定操作的forward只适用于包含它的操作.并将覆盖同一逻辑名称的所有全局forward.
属性 | 说明 | 必需 |
className | 为当前forward定义指定要实例化的配置对象的全限定类名,默认名称为org.apache.struts.config.ForwardConfig | 否 |
contextRelative | 可以设置为true或者false,表示使用应用程序模块时,path属性指定的url是否是相对于应用程序的URL,默认值为false | 否 |
name | 指定forward的逻辑名称 | 是 |
path | 指定forward的URL | 是 |
redirect | 可以设置为true或者false,表示是否为该forward的URL执行HTTP重定位,默认值为false | 否 |
使用forward标签的第一种形式:
<global-forwards>
<forward name=”success” path=”/success.jsp”/>
</global-forwards>
使用forward标签的第二种形式
<action-mappings>
<action path=”/search”
type=”com.yinhai.app.SearchAction”>
<forward name=”success”
path=”/results.jsp”/>
</action>
</action-mappings>
此例定义了一个特定操作的forward.此forward只适用于包含它的操作,并且将覆盖同一个逻辑名称的全局forward(如果有).
11) global-exceptions标记
global-exceptions标记用于封装exception标记定义的,应用程序的一组全局异常处理程序,除非操作的响应action标记通过在其下嵌套exception标记来覆盖一个或者多个全局异常处理程序,否者这些全局异常处理程序将用于操作抛出的所有的异常.
<global-exceptions>
<exception type=”com.yinhai.app.DateFormatException”
key=”errors.date.format”
path=”/error.jsp”/>
</global-exceptions>
上面的标记仅封装应用程序的一组全局异常处理程序.
12) global-forwards标记
global-forwards标记用于封装forwards标记定义的,应用程序的一组forward,除非嵌套的forward标记来定义一个forward,否则全局forward将作用于决定在完成操作时转向何处.
<global-forwards>
<forward name=”success” path=”/success.jsp”/>
<forward name=”failure” path=”/failure.jsp”/>
</global-forwards>
此标记封装应用程序的一组全局forward.
13) message-resources标记
message-resources标记用于定义在查找具体化的字符串,消息和标签时Struts将使用的资源束.
属性 | 说明 | 必需 |
className | 为当前消息资源定义指定要实例化的配置对象的全限定类名,默认名称为org.apache.struts.config.MessageResourcesConfig | 否 |
factory | 指定将用于创建消息资源实例的MessagesResourcesFactory子类的全限定类名,默认名称为org.apache.struts.util.PropertyMessageResourcesFactory | 否 |
key | 指定将存储消息资源实例的Servlet环境属性关键字,如果使用应用程序模块,模块前缀将被追加该关键字,比如${key}${prefix}默认的常量是org.apache.struts.Globals.MESSAGES_KEY指定的值 | 否 |
null | 可以设置为true或者false,表示缺少消息时是否应该返回空值. | 否 |
parameter | 指定一个配置参数值,该值将传递给factory属性指定的工厂对象的createResources()方法 | 是 |
以下说明了message-resources标记的基本用法:
<message-resources
parameter=”com.yinhai.app.ApplicationResources”/>
该示例指定Struts应该使用com.yinhai.app程序包中的名字为ApplicationResources.properties的文件作为其资源束,请注意,文件名中的.properties部分,并非由标记指定,Struts自动将其追加到使用parameter属性指定的文件名的后面.
有时,使用多个资源束是很有用处的,或者需要使用多个资源束.您可以通过在配置文件中使用多个message-resources标记来完成此过程,如下所示:
<message-resources
parameter=”com.yinhai.app.ApplicationResources”/>
<message-resources
parameter=”com.yinhai.app.AlternateApplicationResources”
key=”alternate”/>
每个messag-resources标记示例必须通过key属性指定唯一的关键字来进行识别.除非它表示默认的资源束.不需要制定明确的关键字.
14) plug-in标记
plug-in标记用于定义一个插件,Struts在应用程序启动时加载此插件,在应用程序关闭时卸载此插件.此外,插件对于在应用程序启动时加载永久性资源是非常有用的.每个插件类必须实现Struts的org.apache.struts.action.PlugIn接口.当应用程序启动时,将调用插件的init()方法.当一应用程序关闭时候,将调用插件的destroy()方法.
属性 | 说明 | 必需 |
className | 指定插件的全限定类名,此类必须实现org.apache.struts.action.PlugIn接口 | 是 |
以下示例说明了plug-in标记的用法:
<plug-in className=”org.apache.struts.validator.ValidatorPlugIn”>
<set-property property=”pathnames”
value=”/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml”?>
</plug-in>
由于plug-in标记只有一个属性,由于它非常简单.大多数情况下将嵌套set-property标记来配置此插件.每个插件定义了了可以通过set-property标记配置自己的一组属性.
15) set-property标记
set-property标记用于定义属性以及属性值.可以再许多其他Struts配置文件标记中嵌套该标记的实例来指定属性,这些属性将在实例化标记的相应配置对象时设置.Struts基于该标记的property属性指定的名称,使用反射来查找并调用配置对象的某种值设置方法(例如,对于名称myProp的属性,调用setMyProp()).
属性 | 说明 | 必需 |
property | 指定属性名称 | 是 |
value | 指定属性的值 | 是 |
示例:
<plug-in className=”org.apache.struts.tiles.TilesPlugin”>
<set-property property=”definition-config” value=”/WEB-INF/tiles-defs.xml”/>
<set-property property=”moduleAware” value=”true”/>
</plug-in>
16) struts-config标记
struts-config标记是Struts配置文件的根标记,因此封装了改文件中的所有的其他的标记,该标记仅仅是用于表示配置文件的开始和结束.
PS:元数据标记
可以再Struts配置文件的一些标记中嵌套元数据标记.元数据标记的存在只为额外信息添加到将在GUI工具或者类似的工具中显示的配置文件中,Struts本身则忽略元数据标记.所有元数据标记均无属性,因此您只需要在起始和结束标记之间添加文本已指定他们的值.如下所示:
<action path=”/search” type=”com.yinhai.app.SearchAction”>
<icon>
<small-icon>small.gif</small-icon>
<large-icon>large.gif</large-icon>
</icon>
<display-name>SearchAction</display-name>
<description>Search Action for employees</description>
</action>
参考:Struts程序员查询辞典 Jomes Holmes著(孙燕等译)中国铁道出版社.