「messageSource」Bean を追加した後、エラー メッセージを CookieLocaleResolver で動作させるのに問題がありました。これは、DispatcherServlet (アプリケーションでこれを自動的に使用する) がセキュリティの後に呼び出されるためです。参照: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#localization
私のソリューションは、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();
}
}
}
そして、Spring Security Context 構成:
<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>
これが、この問題を抱えている他の人に役立つことを願っています。