分享

xwork.xml中 组成Action配置的各个元素

 爪一o_0一斗 2013-05-13
组成Action配置的各个元素,例如 :

1actions
2interceptors
3results
4package

一 :包的配置 

Packages是把

1Actions
2Results
3Result Types
4Interceptors
5Stacks

分组成逻辑单元的一种方式,以分享一些共同设置.

包跟对象一样可以扩展,也可以被""包覆盖部分属性.




1 : "extends"属性使一个package可以继承一个或多个前面package中的 :

1拦截器
2拦截器栈
3action等配置

注意,配置文件是被至上而下处理的,所以"被继承"的包必需定义在"继承"包的上面. 

2 : "abstract"表示一个包为抽象包

这样的包可以被继承,但是不能有action的定义

3 :  xwork.xml中包的例子 

 1<xwork>
 2
 3    <include file="webwork-default.xml"/>
 4
 5    <include file="config-browser.xml"/>
 6
 7    <include file="xwork-continuations.xml"/>
 8
 9    <include file="xwork-tags.xml"/>
10    
11    <include file="xwork-validation.xml" />
12    
13    <include file="xwork-actionchaining.xml" />
14
15    <include file="xwork-ajax.xml" />
16
17    <include file="xwork-fileupload.xml" />
18
19    <include file="xwork-person.xml" />
20
21    <include file="xwork-wait.xml" />
22
23    <include file="xwork-token.xml" />
24    
25    <include file="xwork-model-driven.xml" />
26    
27    <include file="xwork-filedownload.xml" />
28
29    <package name="default" extends="webwork-default">
30        <interceptors>
31            <interceptor-stack name="crudStack">
32                <interceptor-ref name="params" />
33                <interceptor-ref name="defaultStack" />
34            </interceptor-stack>
35        </interceptors>
36        
37        <default-action-ref name="showcase"/>
38        
39        <action name="showcase">
40            <result>showcase.jsp</result>
41        </action>
42
43        <action name="date" class="com.opensymphony.webwork.showcase.DateAction">
44            <result name="success">/date.jsp</result>
45        </action>
46
47    </package>
48
49    <package name="skill" extends="default" namespace="/skill">
50        <default-interceptor-ref name="crudStack"/>
51
52        <action name="list" class="com.opensymphony.webwork.showcase.action.SkillAction" method="list">
53            <result>/empmanager/listSkills.jsp</result>
54            <interceptor-ref name="basicStack"/>
55        </action>
56        <action name="edit" class="com.opensymphony.webwork.showcase.action.SkillAction">
57            <result>/empmanager/editSkill.jsp</result>
58            <interceptor-ref name="params" />
59            <interceptor-ref name="basicStack"/>
60        </action>
61        <action name="save" class="com.opensymphony.webwork.showcase.action.SkillAction" method="save">
62            <result name="input">/empmanager/editSkill.jsp</result>
63            <result type="redirect">edit.action?skillName=${currentSkill.name}</result>
64        </action>
65        <action name="delete" class="com.opensymphony.webwork.showcase.action.SkillAction" method="delete">
66            <result name="error">/empmanager/editSkill.jsp</result>
67            <result type="redirect">edit.action?skillName=${currentSkill.name}</result>
68        </action>
69    </package>
70
71    <package name="employee" extends="default" namespace="/employee">
72        <default-interceptor-ref name="crudStack"/>
73
74        <action name="list" class="com.opensymphony.webwork.showcase.action.EmployeeAction" method="list">
75            <result>/empmanager/listEmployees.jsp</result>
76            <interceptor-ref name="basicStack"/>
77        </action>
78        <action name="edit" class="com.opensymphony.webwork.showcase.action.EmployeeAction">
79            <result>/empmanager/editEmployee.jsp</result>
80            <interceptor-ref name="crudStack"><param name="validation.excludeMethods">execute</param></interceptor-ref>
81        </action>
82        <action name="save" class="com.opensymphony.webwork.showcase.action.EmployeeAction" method="save">
83            <result name="input">/empmanager/editEmployee.jsp</result>
84            <result type="redirect">edit.action?empId=${currentEmployee.empId}</result>
85        </action>
86        <action name="delete" class="com.opensymphony.webwork.showcase.action.EmployeeAction" method="delete">
87            <result name="error">/empmanager/editEmployee.jsp</result>
88            <result type="redirect">edit.action?empId=${currentEmployee.empId}</result>
89        </action>
90    </package>
91
92</xwork>


二 :名称空间的配置 

1 :名称空间         

      名称空间属性允许把action配置分成不同的名称空间,这样您可以在具有不同类和参数名称空间中使用相同的名字的action了.

这一点是和Webwork1.x不同,在Webwork1.x中所有的action名字都是全局的不能再一个应用程序中重用.

2 :默认名称空间

      默认名称空间用""(空字符串)表示.如果系统在指定的名称空间中没有找到某个action,就会到默认名称空间中查找.你可以在所有用"extends"扩展的名称空间外配置全局action,就像Webwork 1.x那样不指定名称空间(即作为默认名称空间).
      名称空间也可以用来实现系统安全,例如action名字之前可以有个路径,这个路径就是Webwork 2.0 ServletDispatcher用的名称空间,你可以在路径上使用J2EE声明式的安全限制,这种方式很容易的实现和维护。

3 :根名称空间

       Webwork中以"/"命名的名称空间叫做根名称空间,它是请求直接来自应用程序根路径的时候的名称空间.

和其他名称空间一样,如果在根名称空间中没有所需的action别名,系统会回到默认名称空间中查找.


4 :名称空间的例子

 1<package name="default">
 2    <action name="foo" class="mypackage.simpleAction>
 3        <result name="success" type="dispatcher">greeting.jsp</result>
 4    </action>
 5    <action name="bar" class="mypackage.simpleAction">
 6        <result name="success" type="dispatcher">bar1.jsp</result>
 7    </action>
 8</package>
 9
10<package name="mypackage1" namespace="/">
11    <action name="moo" class="mypackage.simpleActtion">
12        <result name="success" type="dispatcher">moo.jsp</result>
13    </action>
14</package>
15
16<package name="mypackage2" namespace="/barspace">
17    <action name="bar" class="mypackage.simpleAction">
18        <result name="success" type="dispatcher">bar2.jsp</result>
19    </action>
20</package>

解释 :

         如果请求为/barspace/bar.action,系统首先查找'/barspace'名称空间,如果找到bar action便执行,如果没有继续到默认名称空间中查找.在这个例子中'/barspace'空间中存在bar别名,所以它会被执行,如果返回success结果,请求将指向bar2.jsp.

        如果请求为/barspace/foo.action,系统会在/barspace空间中查找foo这个action,如果找不到,系统继续在默认名称空间中查找.除非指定成其他的,否则默认空间是"".在我们上面的例子中,/barspace空间中没有foo这个action,这样默认空间中的/foo.action会被找到并执行.

         如果请求为/moo.action,系统会在根空间('/')中查找'moo' action别名,如果没找到再到默认空间中查找.在这个例子中,moo这个action别名存在因此会被执行.如果返回success,请求指向moo.jsp.

         如果请求为'/foo.action',系统会在'/'空间中查找,找到后执行,如果没有,继续查找默认空间.在本例中,foo这个action别名不存在于'/'空间,所以系统回到默认空间中查找并执行.

注意:名称空间只有一个级别.例如如果url是'/barspace/myspace/bar.action',Webwork先试着查找'/barspace/myspace',在本例中是不存在的.接着就直接到 默认空间 中查找'bar'这个action别名.结果在默认空间中的bar会被执行.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多