Flash
Flash support, allowing you to store information across requests and expire it immediately after a redirect, is included within Scalatra by default.
Basic usage
Flash entries are not normally available within the current request scope.
The exception is adding new flash entries into flash.now.
In order to enable flash support, you’ll need to extend your servlet class
with FlashMapSupport. You can set the flash like this:
class FooServlet extends ScalatraServlet with FlashMapSupport {
post("/articles/create") {
// watch out: this creates a session!
flash("notice") = "article created succesfully"
redirect("/home")
}
get("/home") {
ssp("/home", "flash" -> flash)
}
}
and then you can use it in your view, to let the user know what happened.
home.ssp might look like this:
<%@ import val flash:org.scalatra.FlashMap %>
<html>
<body>
<p>Here is the flash: <%= flash.get("notice") %></p>
</body>
</html>
Adding multiple entries
You can add more than one entry to the FlashMap, using +=:
flash = ("notice" -> "Hello from your application")
flash += ("error" -> "An error occurred")
flash.now += ("info" -> "redirect to see the error")
flash.now operates pretty much in the same way as flash does, except that
it sets a value for the current request only. It will be removed before the
next request unless explicitly kept.
FlashMapSupport and sessions
Please note: extending your ScalatraServlet with FlashMapSupport triggers
a session, which is why it’s an optional mixin.