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

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`.

      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.

      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.