|
||||||||||
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' default RequestProcessor that looks up Spring-managed Struts Actions defined in ContextLoaderPlugIn's 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
method.
Example:
A corresponding bean definition in the ContextLoaderPlugin context looks as follows, being able to fully leverage 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's 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 Struts
Action type in your struts-config.
The default implementation delegates to the DelegatingActionUtils class as fas 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
actionServlet
- the associated ActionServletmoduleConfig
- the associated ModuleConfig
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()
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
The default implementation determines a bean name from the given ActionMapping and looks up the corresponding bean in the WebApplicationContext.
mapping
- the Struts ActionMapping
BeansException
- if thrown by WebApplicationContext methodsdetermineActionBeanName(org.apache.struts.action.ActionMapping)
protected String determineActionBeanName(ActionMapping mapping)
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()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |