6.7. Changing the Current Module
Problem
You want to allow the user to switch to a different module at runtime.
Solution
In the struts-config.xml file of the module that
you will be switching (referred to as the
"source" module), create an
action
that uses a type of
org.apache.struts.actions.SwitchAction
:
<action path="/ChangeModuleTest" type="org.apache.struts.actions.SwitchAction"/>
To use the action, pass request parameters that indicate the module
and page within the module to switch to. The module is specified as
the value of the prefix
request parameter. The
page is specified as the value for the page
request parameter and defines the module-relative location of the
resource to access.
<html:link page="/ChangeModuleTest.do?prefix=moduleName&page=/ SomeAction.do"> Change Module </html:link>
Since the page value is a location, if you are linking to an
action
, you must include the action extension
(e.g., .do
) as part of the parameter value.
Discussion
SwitchAction
changes the
application's current module to another module and
forwards control to a specified module-relative URL. Like
ForwardAction
and
IncludeAction
, the SwitchAction
doesn't require subclassing.
A module is an in-memory, application-relative
context maintained by Struts. Modules partition a web application
context into subcontexts. A module is defined by
creating a separate Struts configuration XML file for the module.
This file is referenced using an initialization parameter for the
Struts ActionServlet
in the web application's ...
Get Jakarta Struts Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.