类 AnnotationMethodHandlerAdapter
- java.lang.Object
- org.springframework.context.support.ApplicationObjectSupport
- org.springframework.web.portlet.context.PortletApplicationObjectSupport
- org.springframework.web.portlet.handler.PortletContentGenerator
- org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter
- 所有已实现的接口:
Aware,BeanFactoryAware,ApplicationContextAware,Ordered,PortletContextAware,HandlerAdapter
public class AnnotationMethodHandlerAdapter extends PortletContentGenerator implements HandlerAdapter, Ordered, BeanFactoryAware
Implementation of theHandlerAdapterinterface that maps handler methods based on portlet modes, action/render phases and request parameters expressed through theRequestMappingannotation.Supports request parameter binding through the
RequestParamannotation. Also supports theModelAttributeannotation for exposing model attribute values to the view, as well asInitBinderfor binder initialization methods andSessionAttributesfor automatic session management of specific attributes.This adapter can be customized through various bean properties. A common use case is to apply shared binder initialization logic through a custom
WebBindingInitializer.- 从以下版本开始:
- 2.5
- 作者:
- Juergen Hoeller, Arjen Poutsma
- 另请参阅:
setWebBindingInitializer(org.springframework.web.bind.support.WebBindingInitializer),setSessionAttributeStore(org.springframework.web.bind.support.SessionAttributeStore)
字段概要
字段 修饰符和类型 字段 说明 static StringIMPLICIT_MODEL_RENDER_PARAMETERstatic StringIMPLICIT_MODEL_SESSION_ATTRIBUTE从类继承的字段 org.springframework.context.support.ApplicationObjectSupport
logger
从接口继承的字段 org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
构造器概要
构造器 构造器 说明 AnnotationMethodHandlerAdapter()
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected PortletRequestDataBindercreateBinder(PortletRequest request, Object target, String objectName)Template method for creating a new PortletRequestDataBinder instance.protected ModelAndViewdoHandle(PortletRequest request, PortletResponse response, Object handler)intgetOrder()Get the order value of this object.voidhandleAction(ActionRequest request, ActionResponse response, Object handler)Use the given handler to handle this action request.voidhandleEvent(EventRequest request, EventResponse response, Object handler)Use the given handler to handle this event request.ModelAndViewhandleRender(RenderRequest request, RenderResponse response, Object handler)Use the given handler to handle this render request.ModelAndViewhandleResource(ResourceRequest request, ResourceResponse response, Object handler)Use the given handler to handle this resource request.voidsetBeanFactory(BeanFactory beanFactory)Callback that supplies the owning factory to a bean instance.voidsetCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)Cache content produced by@SessionAttributesannotated handlers for the given number of seconds.voidsetCustomArgumentResolver(WebArgumentResolver argumentResolver)Set a custom WebArgumentResolver to use for special method parameter types.voidsetCustomArgumentResolvers(WebArgumentResolver... argumentResolvers)Set one or more custom WebArgumentResolvers to use for special method parameter types.voidsetCustomModelAndViewResolver(ModelAndViewResolver customModelAndViewResolver)Set a custom ModelAndViewResolvers to use for special method return types.voidsetCustomModelAndViewResolvers(ModelAndViewResolver... customModelAndViewResolvers)Set one or more custom ModelAndViewResolvers to use for special method return types.voidsetOrder(int order)Specify the order value for this HandlerAdapter bean.voidsetParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g. for default attribute names).voidsetSessionAttributeStore(SessionAttributeStore sessionAttributeStore)Specify the strategy to store session attributes with.voidsetSynchronizeOnSession(boolean synchronizeOnSession)Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client.voidsetWebBindingInitializer(WebBindingInitializer webBindingInitializer)Specify a WebBindingInitializer which will apply pre-configured configuration to every DataBinder that this controller uses.booleansupports(Object handler)Given a handler instance, return whether or not this HandlerAdapter can support it.从类继承的方法 org.springframework.web.portlet.handler.PortletContentGenerator
applyCacheSeconds, cacheForSeconds, check, checkAndPrepare, checkAndPrepare, getCacheSeconds, isRequireSession, preventCaching, setCacheSeconds, setRequireSession
从类继承的方法 org.springframework.web.portlet.context.PortletApplicationObjectSupport
getPortletContext, getTempDir, isContextRequired, setPortletContext
从类继承的方法 org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, initApplicationContext, initApplicationContext, requiredContextClass, setApplicationContext
字段详细资料
IMPLICIT_MODEL_SESSION_ATTRIBUTE
public static final String IMPLICIT_MODEL_SESSION_ATTRIBUTE
IMPLICIT_MODEL_RENDER_PARAMETER
public static final String IMPLICIT_MODEL_RENDER_PARAMETER
- 另请参阅:
- 常量字段值
构造器详细资料
AnnotationMethodHandlerAdapter
public AnnotationMethodHandlerAdapter()
方法详细资料
setWebBindingInitializer
public void setWebBindingInitializer(WebBindingInitializer webBindingInitializer)
Specify a WebBindingInitializer which will apply pre-configured configuration to every DataBinder that this controller uses.
setSessionAttributeStore
public void setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)
Specify the strategy to store session attributes with.Default is
DefaultSessionAttributeStore, storing session attributes in the PortletSession, using the same attribute name as in the model.
setCacheSecondsForSessionAttributeHandlers
public void setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)
Cache content produced by@SessionAttributesannotated handlers for the given number of seconds. Default is 0, preventing caching completely.In contrast to the "cacheSeconds" property which will apply to all general handlers (but not to
@SessionAttributesannotated handlers), this setting will apply to@SessionAttributesannotated handlers only.
setSynchronizeOnSession
public void setSynchronizeOnSession(boolean synchronizeOnSession)
Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client.More specifically, the execution of each handler method will get synchronized if this flag is "true". The best available session mutex will be used for the synchronization; ideally, this will be a mutex exposed by HttpSessionMutexListener.
The session mutex is guaranteed to be the same object during the entire lifetime of the session, available under the key defined by the
SESSION_MUTEX_ATTRIBUTEconstant. It serves as a safe reference to synchronize on for locking on the current session.In many cases, the PortletSession reference itself is a safe mutex as well, since it will always be the same object reference for the same active logical session. However, this is not guaranteed across different servlet containers; the only 100% safe way is a session mutex.
setParameterNameDiscoverer
public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)
Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g. for default attribute names).Default is a
DefaultParameterNameDiscoverer.
setCustomArgumentResolver
public void setCustomArgumentResolver(WebArgumentResolver argumentResolver)
Set a custom WebArgumentResolver to use for special method parameter types. Such a custom WebArgumentResolver will kick in first, having a chance to resolve an argument value before the standard argument handling kicks in.
setCustomArgumentResolvers
public void setCustomArgumentResolvers(WebArgumentResolver... argumentResolvers)
Set one or more custom WebArgumentResolvers to use for special method parameter types. Any such custom WebArgumentResolver will kick in first, having a chance to resolve an argument value before the standard argument handling kicks in.
setCustomModelAndViewResolver
public void setCustomModelAndViewResolver(ModelAndViewResolver customModelAndViewResolver)
Set a custom ModelAndViewResolvers to use for special method return types. Such a custom ModelAndViewResolver will kick in first, having a chance to resolve an return value before the standard ModelAndView handling kicks in.
setCustomModelAndViewResolvers
public void setCustomModelAndViewResolvers(ModelAndViewResolver... customModelAndViewResolvers)
Set one or more custom ModelAndViewResolvers to use for special method return types. Any such custom ModelAndViewResolver will kick in first, having a chance to resolve an return value before the standard ModelAndView handling kicks in.
setOrder
public void setOrder(int order)
Specify the order value for this HandlerAdapter bean.Default value is
Integer.MAX_VALUE, meaning that it's non-ordered.- 另请参阅:
Ordered.getOrder()
getOrder
public int getOrder()
从接口复制的说明:OrderedGet the order value of this object.Higher values are interpreted as lower priority. As a consequence, the object with the lowest value has the highest priority (somewhat analogous to Servlet
load-on-startupvalues).Same order values will result in arbitrary sort positions for the affected objects.
- 指定者:
getOrder在接口中Ordered- 返回:
- the order value
- 另请参阅:
Ordered.HIGHEST_PRECEDENCE,Ordered.LOWEST_PRECEDENCE
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory)
从接口复制的说明:BeanFactoryAwareCallback that supplies the owning factory to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean.afterPropertiesSet()or a custom init-method.- 指定者:
setBeanFactory在接口中BeanFactoryAware- 参数:
beanFactory- owning BeanFactory (nevernull). The bean can immediately call methods on the factory.- 另请参阅:
BeanInitializationException
supports
public boolean supports(Object handler)
从接口复制的说明:HandlerAdapterGiven a handler instance, return whether or not this HandlerAdapter can support it. Typical HandlerAdapters will base the decision on the handler type. HandlerAdapters will usually only support one handler type each.A typical implementation:
return (handler instanceof MyHandler);- 指定者:
supports在接口中HandlerAdapter- 参数:
handler- handler object to check- 返回:
- whether or not this object can use the given handler
handleAction
public void handleAction(ActionRequest request, ActionResponse response, Object handler) throws Exception
从接口复制的说明:HandlerAdapterUse the given handler to handle this action request. The workflow that is required may vary widely.- 指定者:
handleAction在接口中HandlerAdapter- 参数:
request- current action requestresponse- current action responsehandler- handler to use. This object must have previously been passed to thesupportsmethod of this interface, which must have returned true.- 抛出:
Exception- in case of errors- 另请参阅:
Portlet.processAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse)
handleRender
public ModelAndView handleRender(RenderRequest request, RenderResponse response, Object handler) throws Exception
从接口复制的说明:HandlerAdapterUse the given handler to handle this render request. The workflow that is required may vary widely.- 指定者:
handleRender在接口中HandlerAdapter- 参数:
request- current render requestresponse- current render responsehandler- handler to use. This object must have previously been passed to thesupportsmethod of this interface, which must have returnedtrue.- 返回:
- ModelAndView object with the name of the view and the required model data, or
nullif the request has been handled directly - 抛出:
Exception- in case of errors- 另请参阅:
Portlet.render(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
handleResource
public ModelAndView handleResource(ResourceRequest request, ResourceResponse response, Object handler) throws Exception
从接口复制的说明:HandlerAdapterUse the given handler to handle this resource request. The workflow that is required may vary widely.- 指定者:
handleResource在接口中HandlerAdapter- 参数:
request- current render requestresponse- current render responsehandler- handler to use. This object must have previously been passed to thesupportsmethod of this interface, which must have returnedtrue.- 返回:
- ModelAndView object with the name of the view and the required model data, or
nullif the request has been handled directly - 抛出:
Exception- in case of errors- 另请参阅:
ResourceServingPortlet.serveResource(javax.portlet.ResourceRequest, javax.portlet.ResourceResponse)
handleEvent
public void handleEvent(EventRequest request, EventResponse response, Object handler) throws Exception
从接口复制的说明:HandlerAdapterUse the given handler to handle this event request. The workflow that is required may vary widely.- 指定者:
handleEvent在接口中HandlerAdapter- 参数:
request- current action requestresponse- current action responsehandler- handler to use. This object must have previously been passed to thesupportsmethod of this interface, which must have returned true.- 抛出:
Exception- in case of errors- 另请参阅:
EventPortlet.processEvent(javax.portlet.EventRequest, javax.portlet.EventResponse)
doHandle
protected ModelAndView doHandle(PortletRequest request, PortletResponse response, Object handler) throws Exception
- 抛出:
Exception
createBinder
protected PortletRequestDataBinder createBinder(PortletRequest request, Object target, String objectName) throws Exception
Template method for creating a new PortletRequestDataBinder instance.The default implementation creates a standard PortletRequestDataBinder. This can be overridden for custom PortletRequestDataBinder subclasses.
- 参数:
request- current portlet requesttarget- the target object to bind onto (ornullif the binder is just used to convert a plain parameter value)objectName- the objectName of the target object- 返回:
- the PortletRequestDataBinder instance to use
- 抛出:
Exception- in case of invalid state or arguments- 另请参阅:
PortletRequestDataBinder.bind(javax.portlet.PortletRequest)