Struts 2 developers are used to declare the actions belong to a package that extend the “struts-default
“, which contains the default set of interceptors.
<package name="default" namespace="/" extends="struts-default">
<action name="testingAction"
class="com.mkyong.common.action.TestingAction" >
<result name="success">pages/result.jsp</result>
</action>
</package>
The default set of interceptors are grouped as “defaultStack
” in struts-default.xml
file, which is located in the struts2-core.jar
file. The “defaultStack
” provides all the core Struts 2 functionality, which is suit the need of most application.
Try study the struts-default.xml
file, it’s always the best interceptors reference.
Mapping interceptor to action
To map other interceptors to action, use the “interceptor-ref
” element.
<package name="default" namespace="/" extends="struts-default">
<action name="testingAction"
class="com.mkyong.common.action.TestingAction" >
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<result name="success">pages/result.jsp</result>
</action>
</package>
In above snippet code, it map the “timer
” and “logger
” interceptors to the “TestingAction
” action class via “interceptor-ref
” element.
The interceptors will fire in the order they’re declared.
Since the “TestingAction
” is declared it’s own interceptors, it’s immediate loses all the inherit default set of interceptors, you must explicitly declare the “defaultStack
” in order to use it, see below example.
<package name="default" namespace="/" extends="struts-default">
<action name="testingAction"
class="com.mkyong.common.action.TestingAction" >
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="defaultStack"/>
<result name="success">pages/result.jsp</result>
</action>
</package>