Class FlashMap

java.lang.Object
java.util.AbstractMap<K,V>
java.util.HashMap<String,Object>
org.springframework.web.servlet.FlashMap
All Implemented Interfaces:
Serializable, Cloneable, Comparable<FlashMap>, Map<String,Object>

public final class FlashMap extends HashMap<String,Object> implements Comparable<FlashMap>
A FlashMap provides a way for one request to store attributes intended for use in another. This is most commonly needed when redirecting from one URL to another -- for example, the Post/Redirect/Get pattern. A FlashMap is saved before the redirect (typically in the session) and is made available after the redirect and removed immediately.

A FlashMap can be set up with a request path and request parameters to help identify the target request. Without this information, a FlashMap is made available to the next request, which may or may not be the intended recipient. On a redirect, the target URL is known and a FlashMap can be updated with that information. This is done automatically when the org.springframework.web.servlet.view.RedirectView is used.

Note: annotated controllers will usually not use FlashMap directly. See org.springframework.web.servlet.mvc.support.RedirectAttributes for an overview of using flash attributes in annotated controllers.

Since:
3.1
Author:
Rossen Stoyanchev
See Also:
  • Constructor Details

    • FlashMap

      public FlashMap()
  • Method Details

    • setTargetRequestPath

      public void setTargetRequestPath(@Nullable String path)
      Provide a URL path to help identify the target request for this FlashMap.

      The path may be absolute (for example, "/application/resource") or relative to the current request (for example, "../resource").

    • getTargetRequestPath

      @Nullable public String getTargetRequestPath()
      Return the target URL path (or null if none specified).
    • addTargetRequestParams

      public FlashMap addTargetRequestParams(@Nullable MultiValueMap<String,String> params)
      Provide request parameters identifying the request for this FlashMap.
      Parameters:
      params - a Map with the names and values of expected parameters
    • addTargetRequestParam

      public FlashMap addTargetRequestParam(String name, String value)
      Provide a request parameter identifying the request for this FlashMap.
      Parameters:
      name - the expected parameter name (skipped if empty)
      value - the expected value (skipped if empty)
    • getTargetRequestParams

      public MultiValueMap<String,String> getTargetRequestParams()
      Return the parameters identifying the target request, or an empty map.
    • startExpirationPeriod

      public void startExpirationPeriod(int timeToLive)
      Start the expiration period for this instance.
      Parameters:
      timeToLive - the number of seconds before expiration
    • setExpirationTime

      public void setExpirationTime(long expirationTime)
      Set the expiration time for the FlashMap. This is provided for serialization purposes but can also be used instead startExpirationPeriod(int).
      Since:
      4.2
    • getExpirationTime

      public long getExpirationTime()
      Return the expiration time for the FlashMap or -1 if the expiration period has not started.
      Since:
      4.2
    • isExpired

      public boolean isExpired()
      Return whether this instance has expired depending on the amount of elapsed time since the call to startExpirationPeriod(int).
    • compareTo

      public int compareTo(FlashMap other)
      Compare two FlashMaps and prefer the one that specifies a target URL path or has more target URL parameters. Before comparing FlashMap instances ensure that they match a given request.
      Specified by:
      compareTo in interface Comparable<FlashMap>
    • equals

      public boolean equals(@Nullable Object other)
      Specified by:
      equals in interface Map<String,Object>
      Overrides:
      equals in class AbstractMap<String,Object>
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map<String,Object>
      Overrides:
      hashCode in class AbstractMap<String,Object>
    • toString

      public String toString()
      Overrides:
      toString in class AbstractMap<String,Object>