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 Detail

      • addAttribute

        RedirectAttributes addAttribute(java.lang.String attributeName,
                                        @Nullable
                                        java.lang.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(java.lang.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)
      • mergeAttributes

        RedirectAttributes mergeAttributes(java.util.Map<java.lang.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(java.lang.String attributeName,
                                             @Nullable
                                             java.lang.Object attributeValue)
        Add the given flash attribute.
        Parameters:
        attributeName - the attribute name; never null
        attributeValue - the attribute value; may be null
      • addFlashAttribute

        RedirectAttributes addFlashAttribute(java.lang.Object attributeValue)
        Add the given flash storage using a generated name.
        Parameters:
        attributeValue - the flash attribute value; never null
      • getFlashAttributes

        java.util.Map<java.lang.String,?> getFlashAttributes()
        Return the attributes candidate for flash storage or an empty Map.