|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.context.support.ApplicationObjectSupport org.springframework.web.portlet.handler.AbstractHandlerMapping org.springframework.web.portlet.handler.AbstractMapBasedHandlerMapping<PortletMode> org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping
public class DefaultAnnotationHandlerMapping
Implementation of the HandlerMapping
interface that maps handlers based on portlet modes expressed through the
RequestMapping
annotation at the type or method level.
Registered by default in DispatcherPortlet
.
NOTE: If you define custom HandlerMapping beans in your DispatcherPortlet context,
you need to add a DefaultAnnotationHandlerMapping bean explicitly, since custom
HandlerMapping beans replace the default mapping strategies. Defining a
DefaultAnnotationHandlerMapping also allows for registering custom interceptors:
<bean class="org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> ... </property> </bean>Annotated controllers are usually marked with the
Controller
stereotype
at the type level. This is not strictly necessary when RequestMapping
is
applied at the type level (since such a handler usually implements the
Controller
interface). However,
Controller
is required for detecting RequestMapping
annotations
at the method level.
NOTE: Method-level mappings are only allowed to narrow the mapping expressed at the class level (if any). A portlet mode in combination with specific parameter conditions needs to uniquely map onto one specific handler bean, not spread across multiple handler beans. It is strongly recommended to co-locate related handler methods into the same bean.
The AnnotationMethodHandlerAdapter
is responsible for processing
annotated handler methods, as mapped by this HandlerMapping. For
RequestMapping
at the type level, specific HandlerAdapters such as
SimpleControllerHandlerAdapter
apply.
RequestMapping
,
AnnotationMethodHandlerAdapter
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.springframework.web.portlet.handler.AbstractMapBasedHandlerMapping |
---|
AbstractMapBasedHandlerMapping.PortletRequestMappingPredicate |
Field Summary |
---|
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
logger |
Fields inherited from interface org.springframework.core.Ordered |
---|
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE |
Constructor Summary | |
---|---|
DefaultAnnotationHandlerMapping()
|
Method Summary | |
---|---|
protected boolean |
detectHandlerMethods(Class<?> handlerType,
String beanName,
RequestMapping typeMapping)
Derive portlet mode mappings from the handler's method-level mappings. |
protected void |
detectHandlers()
Register all handlers specified in the Portlet mode map for the corresponding modes. |
protected PortletMode |
getLookupKey(PortletRequest request)
Uses the current PortletMode as lookup key. |
void |
initApplicationContext()
Calls the registerHandlers method in addition
to the superclass's initialization. |
protected void |
validateHandler(Object handler,
PortletRequest request)
Validate the given annotated handler against the current request. |
protected void |
validateMapping(RequestMapping mapping,
PortletRequest request)
Validate the given type-level mapping metadata against the current request, checking request method and parameter conditions. |
Methods inherited from class org.springframework.web.portlet.handler.AbstractMapBasedHandlerMapping |
---|
getHandlerInternal, registerHandler, registerHandler, registerHandlers, setLazyInitHandlers |
Methods inherited from class org.springframework.web.portlet.handler.AbstractHandlerMapping |
---|
adaptInterceptor, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getOrder, initInterceptors, setApplyWebRequestInterceptorsToRenderPhaseOnly, setDefaultHandler, setInterceptors, setOrder |
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
getApplicationContext, getMessageSourceAccessor, initApplicationContext, isContextRequired, requiredContextClass, setApplicationContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DefaultAnnotationHandlerMapping()
Method Detail |
---|
public void initApplicationContext() throws BeansException
registerHandlers
method in addition
to the superclass's initialization.
initApplicationContext
in class AbstractHandlerMapping
ApplicationContextException
- in case of initialization errors
BeansException
- if thrown by ApplicationContext methodsdetectHandlers()
protected void detectHandlers() throws BeansException
BeansException
- if the handler couldn't be registeredprotected boolean detectHandlerMethods(Class<?> handlerType, String beanName, RequestMapping typeMapping)
handlerType
- the handler type to introspectbeanName
- the name of the bean introspectedtypeMapping
- the type level mapping (if any)
true
if at least 1 handler method has been registered;
false
otherwiseprotected PortletMode getLookupKey(PortletRequest request) throws Exception
getLookupKey
in class AbstractMapBasedHandlerMapping<PortletMode>
request
- current portlet request
null
)
Exception
- if key computation failedprotected void validateHandler(Object handler, PortletRequest request) throws Exception
Exception
validateMapping(org.springframework.web.bind.annotation.RequestMapping, javax.portlet.PortletRequest)
protected void validateMapping(RequestMapping mapping, PortletRequest request) throws Exception
mapping
- the mapping metadata to validaterequest
- current portlet request
Exception
- if validation failed
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |