Class ModelAndViewMethodReturnValueHandler
- java.lang.Object
- org.springframework.web.servlet.mvc.method.annotation.ModelAndViewMethodReturnValueHandler
- All Implemented Interfaces:
HandlerMethodReturnValueHandler
public class ModelAndViewMethodReturnValueHandler extends Object implements HandlerMethodReturnValueHandler
Handles return values of typeModelAndView
copying view and model information to theModelAndViewContainer
.If the return value is
null
, theModelAndViewContainer.setRequestHandled(boolean)
flag is set totrue
to indicate the request was handled directly.A
ModelAndView
return type has a set purpose. Therefore this handler should be configured ahead of handlers that support any return value type annotated with@ModelAttribute
or@ResponseBody
to ensure they don't take over.- Since:
- 3.1
- Author:
- Rossen Stoyanchev
Constructor Summary
Constructors Constructor Description ModelAndViewMethodReturnValueHandler()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String[]
getRedirectPatterns()
Return the configured redirect patterns, if any.void
handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest)
Handle the given return value by adding attributes to the model and setting a view or setting theModelAndViewContainer.setRequestHandled(boolean)
flag totrue
to indicate the response has been handled directly.protected boolean
isRedirectViewName(String viewName)
Whether the given view name is a redirect view reference.void
setRedirectPatterns(String... redirectPatterns)
Configure one more simple patterns (as described inPatternMatchUtils.simpleMatch(java.lang.String, java.lang.String)
) to use in order to recognize custom redirect prefixes in addition to "redirect:".boolean
supportsReturnType(MethodParameter returnType)
Whether the given method return type is supported by this handler.
Constructor Detail
ModelAndViewMethodReturnValueHandler
public ModelAndViewMethodReturnValueHandler()
Method Detail
setRedirectPatterns
public void setRedirectPatterns(@Nullable String... redirectPatterns)
Configure one more simple patterns (as described inPatternMatchUtils.simpleMatch(java.lang.String, java.lang.String)
) to use in order to recognize custom redirect prefixes in addition to "redirect:".Note that simply configuring this property will not make a custom redirect prefix work. There must be a custom
View
that recognizes the prefix as well.- Since:
- 4.1
getRedirectPatterns
@Nullable public String[] getRedirectPatterns()
Return the configured redirect patterns, if any.- Since:
- 4.1
supportsReturnType
public boolean supportsReturnType(MethodParameter returnType)
Description copied from interface:HandlerMethodReturnValueHandler
Whether the given method return type is supported by this handler.- Specified by:
supportsReturnType
in interfaceHandlerMethodReturnValueHandler
- Parameters:
returnType
- the method return type to check- Returns:
true
if this handler supports the supplied return type;false
otherwise
handleReturnValue
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception
Description copied from interface:HandlerMethodReturnValueHandler
Handle the given return value by adding attributes to the model and setting a view or setting theModelAndViewContainer.setRequestHandled(boolean)
flag totrue
to indicate the response has been handled directly.- Specified by:
handleReturnValue
in interfaceHandlerMethodReturnValueHandler
- Parameters:
returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have previously been passed toHandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
which must have returnedtrue
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current request- Throws:
Exception
- if the return value handling results in an error
isRedirectViewName
protected boolean isRedirectViewName(String viewName)
Whether the given view name is a redirect view reference. The default implementation checks the configured redirect patterns and also if the view name starts with the "redirect:" prefix.- Parameters:
viewName
- the view name to check, nevernull
- Returns:
- "true" if the given view name is recognized as a redirect view reference; "false" otherwise.