Après avoir ajouté le bean "messageSource", j'ai eu des problèmes pour faire fonctionner le message d'erreur avec le CookieLocaleResolver car le DispatcherServlet (qui l'utilise automatiquement pour votre application) est invoqué après le Security. Voir : http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#localization
Ma solution est un filtre personnalisé qui définit le LocalContextHolder :
public class LocaleContextFilter extends OncePerRequestFilter {
private LocaleResolver localeResolver;
public void setLocaleResolver(LocaleResolver localeResolver) {
this.localeResolver = localeResolver;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
// store Local into ThreadLocale
if (this.localeResolver != null) {
final Locale locale = this.localeResolver.resolveLocale(request);
LocaleContextHolder.setLocale(locale);
}
try {
filterChain.doFilter(request, response);
} finally {
LocaleContextHolder.resetLocaleContext();
}
}
}
Et la configuration du Contexte de Sécurité de Spring :
<http use-expressions="true">
<custom-filter ref="localeContextFilter" after="FIRST" />
.....
</http>
<beans:bean id="localeContextFilter" class="at.telekom.ppp.util.opce.fe.interceptor.LocaleContextFilter" >
<beans:property name="localeResolver" ref="localeResolver" /><!-- e.g.: CookieLocaleResolver -->
</beans:bean>
J'espère que cela aidera les autres qui ont ce problème.