|
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.Action org.springframework.web.struts.DelegatingActionProxy
public class DelegatingActionProxy
Proxy for a Spring-managed Struts Action that's defined in ContextLoaderPlugIn's WebApplicationContext.
The proxy is defined in the Struts config file, specifying this class as action class. It will delegate to a Struts Action bean in the ContextLoaderPlugIn context.
<action path="/login" type="org.springframework.web.struts.DelegatingActionProxy"/>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 want to avoid having to specify DelegatingActionProxy as Action
type in your struts-config, for example to be able to generate your
Struts config file with XDoclet, consider
DelegatingRequestProcessor
.
The latter's disadvantage is that it might conflict with the need
for a different RequestProcessor subclass.
The default implementation delegates to the DelegatingActionUtils class as fas as possible, to reuse as much code as possible with DelegatingRequestProcessor and DelegatingTilesRequestProcessor.
Note: The idea of delegating to Spring-managed Struts Actions originated in Don Brown's Spring Struts Plugin. ContextLoaderPlugIn and DelegatingActionProxy constitute a clean-room implementation of the same idea, essentially superseding the original plugin. Many thanks to Don Brown and Matt Raible for the original work and for the agreement to reimplement the idea in Spring proper!
determineActionBeanName(org.apache.struts.action.ActionMapping)
,
DelegatingRequestProcessor
,
DelegatingTilesRequestProcessor
,
DelegatingActionUtils
,
ContextLoaderPlugIn
Field Summary |
---|
Fields inherited from class org.apache.struts.action.Action |
---|
defaultLocale, servlet |
Constructor Summary | |
---|---|
DelegatingActionProxy()
|
Method Summary | |
---|---|
protected String |
determineActionBeanName(ActionMapping mapping)
Determine the name of the Action bean, to be looked up in the WebApplicationContext. |
ActionForward |
execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
Pass the execute call on to the Spring-managed delegate Action. |
protected Action |
getDelegateAction(ActionMapping mapping)
Return the delegate Action for the given mapping. |
protected WebApplicationContext |
getWebApplicationContext(ActionServlet actionServlet,
ModuleConfig moduleConfig)
Fetch ContextLoaderPlugIn's WebApplicationContext from the ServletContext, falling back to the root WebApplicationContext. |
Methods inherited from class org.apache.struts.action.Action |
---|
addErrors, addMessages, execute, generateToken, getDataSource, getDataSource, getErrors, getLocale, getMessages, getResources, getResources, getServlet, isCancelled, isTokenValid, isTokenValid, resetToken, saveErrors, saveErrors, saveErrors, saveMessages, saveMessages, saveToken, setLocale, setServlet |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DelegatingActionProxy()
Method Detail |
---|
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
Exception
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 WebApplicationContext getWebApplicationContext(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 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()
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |