This page last changed on Dec 13, 2004 by casey.

综述

使用包可以将活动, 结果, 结果类型, 截取器和栈组合为一个逻辑单元的并使它们共享通用配置. 包和对象类似, 子包也可以扩展并覆盖父包的某些部分.

package元素有一个必需属性"name", 它作为后面引用该包的键值. "extends"属性是可选的, 允许一个包继承前一个或几个包的配置信息, 包括所有的截取器, 截取器栈, 和活动. 需要注意的是, 配置文件是从上到下顺序进行处理的, 因此被其他包引用的包应当定义在前面. "abstract"可选属性用来创建一个抽象包, 扩展该包时不包含其中的活动配置.
属性 必需 描述
name 其他包引用时的键值
extends 从扩展的包中继承
namespace 参见名空间
abstract 声明为抽象包(包中不需要活动配置)
xwork.xml中的使用示例
<package name="bar" extends="webwork-default" namespace="/foo/bar">
        <interceptors>
            <interceptor-stack name="barDefaultStack">
                <interceptor-ref name="debugStack"/>
                <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
        </interceptors>

        <action name="Bar" class="com.opensymphony.xwork.SimpleAction">
            <interceptor-ref name="barDefaultStack"/>
        </action>

        <action name="TestInterceptorParamInheritance" class="com.opensymphony.xwork.SimpleAction">
            <interceptor-ref name="test">
                <param name="expectedFoo">expectedFoo</param>
            </interceptor-ref>
        </action>

        <action name="TestInterceptorParamInehritanceOverride" class="com.opensymphony.xwork.SimpleAction">
            <interceptor-ref name="test">
                <param name="foo">foo123</param>
                <param name="expectedFoo">foo123</param>
            </interceptor-ref>
        </action>
    </package>

    <package name="abstractPackage" namespace="/abstract" abstract="true">
        <action name="test" class="com.opensymphony.xwork.SimpleAction"/>
    </package>

    <package name="nonAbstractPackage" extends="abstractPackage" namespace="/nonAbstract"/>

    <package name="baz" extends="default" namespace="baz">
        <action name="commandTest" class="com.opensymphony.xwork.SimpleAction">
            <param name="foo">123</param>
            <result name="error" type="chain">
                <param name="actionName">bar</param>
            </result>
            <interceptor-ref name="static-params"/>
        </action>
        <action name="myCommand" class="com.opensymphony.xwork.SimpleAction" method="commandMethod">
            <param name="bar">456</param>
            <result name="success" type="chain">
                <param name="actionName">foo</param>
            </result>
            <interceptor-ref name="logger"/>
        </action>
    </package>

    <package name="multipleInheritance" extends="default,abstractPackage,bar" namespace="multipleInheritance">
        <action name="testMultipleInheritance" class="com.opensymphony.xwork.SimpleAction">
            <result name="success" type="chain">
                <param name="actionName">foo</param>
            </result>
            <interceptor-ref name="barDefaultStack"/>
        </action>
    </package>
Document generated by Confluence on Dec 14, 2004 16:36