|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.struts.action.RequestProcessor org.springframework.web.struts.DelegatingRequestProcessor
public class DelegatingRequestProcessor
Subclass of Struts's default RequestProcessor
that looks up
Spring-managed Struts Actions
defined in
ContextLoaderPlugIn's
WebApplicationContext
(or, as a fallback, in the root WebApplicationContext
).
In the Struts config file, you can either specify the original
Action
class (as when generated by XDoclet), or no
Action
class at all. In any case, Struts will delegate to an
Action
bean in the ContextLoaderPlugIn
context.
<action path="/login" type="myapp.MyAction"/>or
<action path="/login"/>The name of the
Action
bean in the
WebApplicationContext
will be determined from the mapping path
and module prefix. This can be customized by overriding the
determineActionBeanName(org.apache.struts.action.ActionMapping)
method.
Example:
A corresponding bean definition in the ContextLoaderPlugin
context would look as follows; notice that the Action
is now
able to leverage fully Spring's configuration facilities:
<bean name="/login" class="myapp.MyAction"> <property name="...">...</property> </bean>Note that you can use a single
ContextLoaderPlugIn
for all
Struts modules. That context can in turn be loaded from multiple XML files,
for example split according to Struts modules. Alternatively, define one
ContextLoaderPlugIn
per Struts module, specifying appropriate
"contextConfigLocation" parameters. In both cases, the Spring bean name has
to include the module prefix.
If you also need the Tiles setup functionality of the original
TilesRequestProcessor
, use
DelegatingTilesRequestProcessor
. As there is just a
single central class to customize in Struts, we have to provide another
subclass here, covering both the Tiles and the Spring delegation aspect.
If this RequestProcessor
conflicts with the need for a
different RequestProcessor
subclass (other than
TilesRequestProcessor
), consider using
DelegatingActionProxy
as the Struts Action
type in
your struts-config file.
The default implementation delegates to the
DelegatingActionUtils
class as much as possible, to reuse as
much code as possible despite the need to provide two
RequestProcessor
subclasses. If you need to subclass yet
another RequestProcessor
, take this class as a template,
delegating to DelegatingActionUtils
just like it.
determineActionBeanName(org.apache.struts.action.ActionMapping)
,
DelegatingTilesRequestProcessor
,
DelegatingActionProxy
,
DelegatingActionUtils
,
ContextLoaderPlugIn
Field Summary |
---|
Fields inherited from class org.apache.struts.action.RequestProcessor |
---|
actions, INCLUDE_PATH_INFO, INCLUDE_SERVLET_PATH, log, moduleConfig, servlet |
Constructor Summary | |
---|---|
DelegatingRequestProcessor()
|
Method Summary | |
---|---|
protected String |
determineActionBeanName(ActionMapping mapping)
Determine the name of the Action bean, to be looked up in
the WebApplicationContext . |
protected Action |
getDelegateAction(ActionMapping mapping)
Return the delegate Action for the given mapping. |
protected WebApplicationContext |
getWebApplicationContext()
Return the WebApplicationContext that this processor
delegates to. |
void |
init(ActionServlet actionServlet,
ModuleConfig moduleConfig)
|
protected WebApplicationContext |
initWebApplicationContext(ActionServlet actionServlet,
ModuleConfig moduleConfig)
Fetch ContextLoaderPlugIn's WebApplicationContext from the
ServletContext , falling back to the root
WebApplicationContext . |
protected Action |
processActionCreate(HttpServletRequest request,
HttpServletResponse response,
ActionMapping mapping)
Override the base class method to return the delegate action. |
Methods inherited from class org.apache.struts.action.RequestProcessor |
---|
destroy, doForward, doInclude, getInternal, getServletContext, internalModuleRelativeForward, internalModuleRelativeInclude, log, log, process, processActionForm, processActionPerform, processCachedMessages, processContent, processException, processForward, processForwardConfig, processInclude, processLocale, processMapping, processMultipart, processNoCache, processPath, processPopulate, processPreprocess, processRoles, processValidate |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DelegatingRequestProcessor()
Method Detail |
---|
public void init(ActionServlet actionServlet, ModuleConfig moduleConfig) throws ServletException
init
in class RequestProcessor
ServletException
protected WebApplicationContext initWebApplicationContext(ActionServlet actionServlet, ModuleConfig moduleConfig) throws IllegalStateException
WebApplicationContext
from the
ServletContext
, falling back to the root
WebApplicationContext
.
This context is supposed to contain the Struts Action
beans to delegate to.
actionServlet
- the associated ActionServlet
moduleConfig
- the associated ModuleConfig
WebApplicationContext
IllegalStateException
- if no WebApplicationContext
could be foundDelegatingActionUtils.findRequiredWebApplicationContext(org.apache.struts.action.ActionServlet, org.apache.struts.config.ModuleConfig)
,
ContextLoaderPlugIn.SERVLET_CONTEXT_PREFIX
protected final WebApplicationContext getWebApplicationContext()
WebApplicationContext
that this processor
delegates to.
protected Action processActionCreate(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) throws IOException
processActionCreate
in class RequestProcessor
IOException
getDelegateAction(org.apache.struts.action.ActionMapping)
protected Action getDelegateAction(ActionMapping mapping) throws BeansException
Action
for the given mapping.
The default implementation determines a bean name from the
given ActionMapping
and looks up the corresponding
bean in the WebApplicationContext
.
mapping
- the Struts ActionMapping
Action
, or null
if none found
BeansException
- if thrown by WebApplicationContext
methodsdetermineActionBeanName(org.apache.struts.action.ActionMapping)
protected String determineActionBeanName(ActionMapping mapping)
Action
bean, to be looked up in
the WebApplicationContext
.
The default implementation takes the
mapping path
and
prepends the
module prefix
,
if any.
mapping
- the Struts ActionMapping
DelegatingActionUtils.determineActionBeanName(org.apache.struts.action.ActionMapping)
,
ActionConfig.getPath()
,
ModuleConfig.getPrefix()
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |