Package org.springframework.web.servlet.mvc.method.annotation

# Class ModelAndViewMethodReturnValueHandler

java.lang.Object
org.springframework.web.servlet.mvc.method.annotation.ModelAndViewMethodReturnValueHandler

All Implemented Interfaces:
  `org.springframework.web.method.support.HandlerMethodReturnValueHandler`

public class ModelAndViewMethodReturnValueHandler extends Object implements org.springframework.web.method.support.HandlerMethodReturnValueHandler
Handles return values of type `ModelAndView` copying view and model information to the `ModelAndViewContainer`.

If the return value is `null`, the `ModelAndViewContainer.setRequestHandled(boolean)` flag is set to `true` 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

Modifier and Type
Method
Description
`String[]`
`getRedirectPatterns()`
Return the configured redirect patterns, if any.
`void`
`handleReturnValue(Object returnValue, org.springframework.core.MethodParameter returnType, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest)`
`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(org.springframework.core.MethodParameter returnType)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ModelAndViewMethodReturnValueHandler

public ModelAndViewMethodReturnValueHandler()

## Method Details

### setRedirectPatterns

public void setRedirectPatterns(@Nullable 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:".

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(org.springframework.core.MethodParameter returnType)

Specified by:
  `supportsReturnType` in interface `org.springframework.web.method.support.HandlerMethodReturnValueHandler`

### handleReturnValue

public void handleReturnValue(@Nullable Object returnValue, org.springframework.core.MethodParameter returnType, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest) throws Exception

Specified by:
  `handleReturnValue` in interface `org.springframework.web.method.support.HandlerMethodReturnValueHandler`
Throws:
  `Exception`

### 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, never `null`
Returns:
  "true" if the given view name is recognized as a redirect view reference; "false" otherwise.