The Personal Blog of Todd Sharp

Spark Java "Flash" Scope

Posted By: Todd Sharp on 4/18/2017 7:33 UTC
Tagged: Groovy, Java, Spark Java

One of the handiest features of Grails is the "flash" scope.  The flash scope is "A temporary storage map that stores objects within the session for the next request and the next request only, automatically clearing out the objects held there after the next request completes."  It's a handy way to send messages and errors around when dealing with form posts and redirects.  Since I've been working with Spark Java I've found myself missing this little feature so I decided to throw together my own implementation.  I've added the following closure inside of my main() method in my Bootstrap class:

To manage the lifetime of the scope, I've added the following in my after() filter.  It limits the lifetime of any flash scoped variable to 2 requests:  

To read from the scope:

flash(request, 'key')

To write to it:

flash(request, 'key', 'value')

For convenience the write method also returns the value meaning you can do things like this:

To return then entire flash scope: