Packages
are a way to group actions, results, result types, interceptors, and
interceptor-stacks into a logical configuration unit. Conceptually,
packages are similiar to objects in that they can be extended and have
individual parts that can be overridden by "sub" packages.
包是一種把action,result,result type,interceptors,和 interceptor-stacks分組到邏輯配置單元的一種手段,概念上,包類似于可被擴張的對象,和可被子包覆蓋的個體。
Packages
The package element has one required attribute, name, which acts as the key for later reference to the package. The extends
attribute is optional and allows one package to inherit the
configuration of one or more previous packages - including all
interceptor, interceptor-stack, and action configurations.
Note that the configuration file is processed sequentially down the
document, so the package referenced by an "extends" should be defined above the package which extends it.
The optional abstract attribute creates a base package that can omit the action configuration.
Attribute |
Required |
Description |
name |
yes |
key to for other packages to reference |
extends |
no |
inherits package behavior of the package it extends |
namespace |
no |
see Namespace Configuration |
abstract |
no |
declares package to be abstract (no action configurations required in package) |
Sample usage
<package name="employee" extends="default" namespace="/employee">
<default-interceptor-ref name="crudStack"/>
<action name="list" method="list"
class="org.apache.struts2.showcase.action.EmployeeAction" >
<result>/empmanager/listEmployees.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
<action name="edit-*" class="org.apache.struts2.showcase.action.EmployeeAction">
<param name="empId">{1}</param>
<result>/empmanager/editEmployee.jsp</result>
<interceptor-ref name="crudStack">
<param name="validation.excludeMethods">execute</param>
</interceptor-ref>
</action>
<action name="save" method="save"
class="org.apache.struts2.showcase.action.EmployeeAction" >
<result name="input">/empmanager/editEmployee.jsp</result>
<result type="redirect">edit-${currentEmployee.empId}.action</result>
</action>
<action name="delete" method="delete"
class="org.apache.struts2.showcase.action.EmployeeAction" >
<result name="error">/empmanager/editEmployee.jsp</result>
<result type="redirect">edit-${currentEmployee.empId}.action</result>
</action>
</package>
</struts>