org.springframework.web.servlet.mvc.support

## Interface RedirectAttributes

All Superinterfaces:
  Model

All Known Implementing Classes:
  RedirectAttributesModelMap

    public interface RedirectAttributes
    extends Model

A specialization of the `Model` interface that controllers can use to select attributes for a redirect scenario. Since the intent of adding redirect attributes is very explicit -- i.e. to be used for a redirect URL, attribute values may be formatted as Strings and stored that way to make them eligible to be appended to the query string or expanded as URI variables in `org.springframework.web.servlet.view.RedirectView`.

This interface also provides a way to add flash attributes. For a general overview of flash attributes see `FlashMap`. You can use `RedirectAttributes` to store flash attributes and they will be automatically propagated to the "output" FlashMap of the current request.

Example usage in an `@Controller`:

     @RequestMapping(value = "/accounts", method = RequestMethod.POST)
     public String handle(Account account, BindingResult result, RedirectAttributes redirectAttrs) {
       if (result.hasErrors()) {
         return "accounts/new";
       }
       // Save account ...
       redirectAttrs.addAttribute("id", account.getId()).addFlashAttribute("message", "Account created!");
       return "redirect:/accounts/{id}";
     }

A RedirectAttributes model is empty when the method is called and is never used unless the method returns a redirect view name or a RedirectView.

After the redirect, flash attributes are automatically added to the model of the controller that serves the target URL.

Since:
  3.1
Author:
  Rossen Stoyanchev

### Method Summary

Methods
`RedirectAttributes` `addAllAttributes(Collection<?> attributeValues)` Copy all attributes in the supplied `Collection` into this `Map`, using attribute name generation for each element.
`RedirectAttributes` `addAttribute(Object attributeValue)` Add the supplied attribute to this `Map` using a `generated name`.
`RedirectAttributes` `addAttribute(String attributeName, Object attributeValue)` Add the supplied attribute under the supplied name.
`RedirectAttributes` `addFlashAttribute(Object attributeValue)` Add the given flash storage using a `generated name`.
`RedirectAttributes` `addFlashAttribute(String attributeName, Object attributeValue)` Add the given flash attribute.
`Map<String,?>` `getFlashAttributes()` Return the attributes candidate for flash storage or an empty Map.
`RedirectAttributes` `mergeAttributes(Map<String,?> attributes)` Copy all attributes in the supplied `Map` into this `Map`, with existing objects of the same name taking precedence (i.e.

### Methods inherited from interface org.springframework.ui.Model

`addAllAttributes, asMap, containsAttribute`

### Method Detail

#### addAttribute

    RedirectAttributes addAttribute(String attributeName,
                                  Object attributeValue)

Description copied from interface: `Model`
Add the supplied attribute under the supplied name.

Specified by:
  `addAttribute` in interface `Model`
Parameters:
  `attributeName` - the name of the model attribute (never `null`)
  `attributeValue` - the model attribute value (can be `null`)

#### addAttribute

    RedirectAttributes addAttribute(Object attributeValue)

Description copied from interface: `Model`
Add the supplied attribute to this `Map` using a `generated name`.

<emphasis>Note: Empty `Collections` are not added to the model when using this method because we cannot correctly determine the true convention name. View code should check for `null` rather than for empty collections as is already done by JSTL tags.</emphasis>

Specified by:
  `addAttribute` in interface `Model`
Parameters:
  `attributeValue` - the model attribute value (never `null`)

#### addAllAttributes

    RedirectAttributes addAllAttributes(Collection<?> attributeValues)

Description copied from interface: `Model`
Copy all attributes in the supplied `Collection` into this `Map`, using attribute name generation for each element.

Specified by:
  `addAllAttributes` in interface `Model`
See Also:
  `Model.addAttribute(Object)`

#### mergeAttributes

    RedirectAttributes mergeAttributes(Map<String,?> attributes)

Description copied from interface: `Model`
Copy all attributes in the supplied `Map` into this `Map`, with existing objects of the same name taking precedence (i.e. not getting replaced).

Specified by:
  `mergeAttributes` in interface `Model`

#### addFlashAttribute

    RedirectAttributes addFlashAttribute(String attributeName,
                                       Object attributeValue)

Add the given flash attribute.

Parameters:
  `attributeName` - the attribute name; never `null`
  `attributeValue` - the attribute value; may be `null`

#### addFlashAttribute

    RedirectAttributes addFlashAttribute(Object attributeValue)

Add the given flash storage using a `generated name`.

Parameters:
  `attributeValue` - the flash attribute value; never `null`

#### getFlashAttributes

    Map<String,?> getFlashAttributes()

Return the attributes candidate for flash storage or an empty Map.