This page last changed on Jun 17, 2004 by casey.

名空间

namespaces属性允许将活动配置隔离在不同名空间中, 这样你可以在多个名空间中使用同一个的活动别名配置不同的活动类(class), 参数等等. 这与Webwork 1.x不同, 1.x中全部活动名都是全局的不能在一个应用中重复使用. 缺省的名空间""(空字符串)用于"捕获(catch-all)"其他名空间, 如果一个活动没有包含在指定的名空间中, 将搜索缺省名空间. 它可以在扩展继承链之外定义一个全局活动配置, 同时也兼容Webwork 1.x版本不指定名空间的做法. 名空间的功能还可以用于安全, 例如, Webwork 2.0的 ServletDispatcher把活动名称之前的部分作为名空间, 这就使J2EE基于路径的安全机制易于实现和管理.

名空间示例

<package name="default">

    <action name="foo" class="mypackage.simpleAction>
        <result name="success" type="dispatcher">greeting.jsp</result>
    </action>
    <action name="bar" class="mypackage.simpleAction"> 
        <result name="success" type="dispatcher">bar1.jsp</result> 
    </action> 

</package>


<package name="mypackage" namespace="/barspace"> 

    <action name="bar" class="mypackage.simpleAction"> 
        <result name="success" type="dispatcher">bar2.jsp</result> 
    </action> 

</package>

如果请求/barspace/bar.action, 那么将搜索mypackage包并执行活动bar. 如果活动返回success, 就显示bar2.jsp.

注意: 如果请求/barspace/foo.action, 由于活动foo在名空间/barspace中因此被找到. 如果活动不存在, 将查找缺声明空间. 未指定时缺省名空间是"". 上例中, 名空间/barspace中没有活动foo, 因此将搜索缺省名空间并执行/foo.action.

Document generated by Confluence on Dec 14, 2004 16:36