Most of the spring tutorials and examples show you how to get the message from the resource file and how to show it in your view (jsp), but not how you should handle those messages in your controller and between views.
Here is an example of how im doing it now where I have a view/controller that handles forgotten passwords. When the password is sent I redirect back to the login screen with a message that "your password is sent ..."
@RequestMapping(value="/forgottenpassword")
public String forgottenpassword(@RequestParam String email) {
....something something
if(email != null){
return "redirect:/login?forgottenpassword=ok";
}
}
@RequestMapping(value="/login")
public String login(HttpServletRequest request) {
if(request.getParameter("forgottenpassword") != null && request.getParameter("forgottenpassword").equals("ok")) {
data.put("ok_forgottenpassword", "forgottenpassword.ok");
}
return "login";
}
Finaly I display the message in my view, in this case a freemarker template
<#if (ok_forgottenpassword?exists)>
<div class="alert alert-success"><@spring.message "${ok_forgottenpassword}" /></div>
</#if>
Is this the best way of doing it in a Spring framework? It's simple with just 1 type of message, but what if I need 5?
Add errors into list in your controller like
Then in jsp page iterate all errors to display like
Just create a simple bean and push it to data. In that bean you can have all the messages what you want loaded from a resourcebundle. (by the way: do you really need the resource bundle? It does a few fancy tricks which are completely unnecessary unless you need i18n. A simple properties file would suffice in almost every other case.)
This technique is actullay called flash message and is implemented in Spring 3.1 as found in this answer: https://stackoverflow.com/a/7808960/142824