public interface RedirectAttributes extends Model
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.
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. |
addAllAttributes, asMap, containsAttribute, getAttribute
RedirectAttributes addAttribute(String attributeName, @Nullable Object attributeValue)
Model
addAttribute
in interface Model
attributeName
- the name of the model attribute (never null
)attributeValue
- the model attribute value (can be null
)RedirectAttributes addAttribute(Object attributeValue)
Model
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.
addAttribute
in interface Model
attributeValue
- the model attribute value (never null
)RedirectAttributes addAllAttributes(Collection<?> attributeValues)
Model
Collection
into this
Map
, using attribute name generation for each element.addAllAttributes
in interface Model
Model.addAttribute(Object)
RedirectAttributes mergeAttributes(Map<String,?> attributes)
Model
Map
into this Map
,
with existing objects of the same name taking precedence (i.e. not getting
replaced).mergeAttributes
in interface Model
RedirectAttributes addFlashAttribute(String attributeName, @Nullable Object attributeValue)
attributeName
- the attribute name; never null
attributeValue
- the attribute value; may be null
RedirectAttributes addFlashAttribute(Object attributeValue)
generated name
.attributeValue
- the flash attribute value; never null