java.lang.Object | ||||
↳ | org.springframework.context.support.ApplicationObjectSupport | |||
↳ | org.springframework.web.portlet.handler.AbstractHandlerMapping | |||
↳ | org.springframework.web.portlet.handler.AbstractMapBasedHandlerMapping<K> | |||
↳ | org.springframework.web.portlet.handler.PortletModeParameterHandlerMapping |
Implementation of the HandlerMapping
interface to map from the current PortletMode and a request parameter to
request handler beans. The mapping consists of two levels: first the
PortletMode and then the parameter value. In order to be mapped,
both elements must match the mapping definition.
This is a combination of the methods used in PortletModeHandlerMapping
and ParameterHandlerMapping
. Unlike
those two classes, this mapping cannot be initialized with properties since it
requires a two-level map.
The default name of the parameter is "action", but can be changed using
setParameterName()
.
By default, the same parameter value may not be used in two different portlet
modes. This is so that if the portal itself changes the portlet mode, the request
will no longer be valid in the mapping. This behavior can be changed with
setAllowDupParameters()
.
The bean configuration for this mapping will look somthing like this:
<bean id="portletModeParameterHandlerMapping" class="org.springframework.web.portlet.handler.PortletModeParameterHandlerMapping"> <property name="portletModeParameterMap"> <map> <entry key="view"> <!-- portlet mode: view --> <map> <entry key="add"><ref bean="addItemHandler"/></entry> <entry key="edit"><ref bean="editItemHandler"/></entry> <entry key="delete"><ref bean="deleteItemHandler"/></entry> </map> </entry> <entry key="edit"> <!-- portlet mode: edit --> <map> <entry key="prefs"><ref bean="preferencesHandler"/></entry> <entry key="resetPrefs"><ref bean="resetPreferencesHandler"/></entry> </map> </entry> </map> </property> </bean>
This mapping can be chained ahead of a PortletModeHandlerMapping
,
which can then provide defaults for each mode and an overall default as well.
Thanks to Rainer Schmitz and Yujin Kim for suggesting this mapping strategy!
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | DEFAULT_PARAMETER_NAME | Default request parameter name to use for mapping to handlers: "action". |
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From interface
org.springframework.core.Ordered
|
[Expand]
Inherited Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.springframework.context.support.ApplicationObjectSupport
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Calls the
registerHandlers method in addition
to the superclass's initialization. | |||||||||||
Set whether to allow duplicate parameter values across different portlet modes.
| |||||||||||
Set the name of the parameter used for mapping to handlers.
| |||||||||||
Set a Map with portlet mode names as keys and another Map as values.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Returns a lookup key that combines the current PortletMode and the current
value of the specified parameter.
| |||||||||||
Register all handlers specified in the given parameter map.
| |||||||||||
Register the given handler instance for the given PortletMode and parameter value,
under an appropriate lookup key.
| |||||||||||
Register all handlers specified in the Portlet mode map for the corresponding modes.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.springframework.web.portlet.handler.AbstractMapBasedHandlerMapping
| |||||||||||
From class
org.springframework.web.portlet.handler.AbstractHandlerMapping
| |||||||||||
From class
org.springframework.context.support.ApplicationObjectSupport
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
org.springframework.context.ApplicationContextAware
| |||||||||||
From interface
org.springframework.core.Ordered
| |||||||||||
From interface
org.springframework.web.portlet.HandlerMapping
|
Default request parameter name to use for mapping to handlers: "action".
Calls the registerHandlers
method in addition
to the superclass's initialization.
BeansException |
---|
Set whether to allow duplicate parameter values across different portlet modes. Default is "false".
Doing this is dangerous because the portlet mode can be changed by the portal itself and the only way to see that is a rerender of the portlet. If the same parameter value is legal in multiple modes, then a change in mode could result in a matched mapping that is not intended and the user could end up in a strange place in the application.
Set the name of the parameter used for mapping to handlers.
Default is "action".
Set a Map with portlet mode names as keys and another Map as values. The sub-map has parameter names as keys and handler bean or bean names as values.
Convenient for population with bean references.
portletModeParameterMap | two-level map of portlet modes and parameters to handler beans |
---|
Returns a lookup key that combines the current PortletMode and the current value of the specified parameter.
request | current portlet request |
---|
null
)Exception |
---|
setParameterName(String)
Register all handlers specified in the given parameter map.
parameterMap | Map with parameter names as keys and handler beans or bean names as values |
---|
Register the given handler instance for the given PortletMode and parameter value, under an appropriate lookup key.
mode | the PortletMode for which this mapping is valid |
---|---|
parameter | the parameter value to which this handler is mapped |
handler | the handler instance bean |
BeansException | if the handler couldn't be registered |
---|---|
IllegalStateException | if there is a conflicting handler registered |
Register all handlers specified in the Portlet mode map for the corresponding modes.
portletModeParameterMap | Map with mode names as keys and parameter Maps as values |
---|