A composite action mapper that is capable of delegating to a series of {@link ActionMapper} if the former
failed to obtained a valid {@link ActionMapping} or uri.
It is configured through struts.properties.
For example, with the following entries in struts.properties
<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="struts"
class="org.apache.struts2.dispatcher.mapper.CompositeActionMapper" />
<constant name="struts.mapper.composite"
value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper,org.apache.struts2.dispatcher.mapper.RestfulActionMapperorg.apache.struts2.dispatcher.mapper.Restful2ActionMapper" />
When {@link CompositeActionMapper#getMapping(HttpServletRequest, ConfigurationManager)} or
{@link CompositeActionMapper#getUriFromActionMapping(ActionMapping)} is invoked,
{@link CompositeActionMapper} would go through these {@link ActionMapper}s in sequence
starting from {@link ActionMapper} identified by 'struts.mapper.composite.1', followed by
'struts.mapper.composite.2' and finally 'struts.mapper.composite.3' (in this case) until either
one of the {@link ActionMapper} return a valid result (not null) or it runs out of {@link ActionMapper}
in which case it will just return null for both
{@link CompositeActionMapper#getMapping(HttpServletRequest, ConfigurationManager)} and
{@link CompositeActionMapper#getUriFromActionMapping(ActionMapping)} methods.
For example with the following in struts-*.xml :-
<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="struts"
class="org.apache.struts2.dispatcher.mapper.CompositeActionMapper" />
<constant name="struts.mapper.composite"
value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper,foo.bar.MyActionMapper,foo.bar.MyAnotherActionMapper" />
CompositeActionMapper will be configured with 3 ActionMapper, namely
"DefaultActionMapper", "MyActionMapper" and "MyAnotherActionMapper".
CompositeActionMapper would consult each of them in order described above.
|