public class ViewNameMethodReturnValueHandler extends Object implements HandlerMethodReturnValueHandler
void
and String
interpreting them
as view name reference. As of 4.2, it also handles general CharSequence
types, e.g. StringBuilder
or Groovy's GString
, as view names.
A null
return value, either due to a void
return type or
as the actual return value is left as-is allowing the configured
RequestToViewNameTranslator
to select a view name by convention.
A String return value can be interpreted in more than one ways depending on
the presence of annotations like @ModelAttribute
or @ResponseBody
.
Therefore this handler should be configured after the handlers that support these
annotations.
Constructor and Description |
---|
ViewNameMethodReturnValueHandler() |
Modifier and Type | Method and Description |
---|---|
String[] |
getRedirectPatterns()
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 the
ModelAndViewContainer.setRequestHandled(boolean) flag to true
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 in
PatternMatchUtils.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.
|
public void setRedirectPatterns(@Nullable String... redirectPatterns)
PatternMatchUtils.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.
@Nullable public String[] getRedirectPatterns()
public boolean supportsReturnType(MethodParameter returnType)
HandlerMethodReturnValueHandler
supportsReturnType
in interface HandlerMethodReturnValueHandler
returnType
- the method return type to checktrue
if this handler supports the supplied return type;
false
otherwisepublic void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception
HandlerMethodReturnValueHandler
ModelAndViewContainer.setRequestHandled(boolean)
flag to true
to indicate the response has been handled directly.handleReturnValue
in interface HandlerMethodReturnValueHandler
returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have
previously been passed to HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
which must
have returned true
.mavContainer
- the ModelAndViewContainer for the current requestwebRequest
- the current requestException
- if the return value handling results in an errorprotected boolean isRedirectViewName(String viewName)
viewName
- the view name to check, never null