Comment faire pour changer la locale de l’utilisateur dans le code d’une servlet lorsque l’on utilise les tags <fmt:message /> de la JSTL pour afficher des messages ?

La solution est très simple, même si peu connue :

String language = "fr";
String country = "FR";
Locale locale = new Locale(language, country);
HttpSession session = request.getSession();
//Le code ci-dessous peut être remplacé par String attrName = javax.servlet.jsp.jstl.core.Config.FMT_LOCALE+".session";
String attrName = "javax.servlet.jsp.jstl.fmt.locale.session";
session.setAttribute(attrName, locale);

Ainsi, vous allez pouvoir changer la locale et surtout la langue de l’utilisateur dans vos applications web.