続・ロケール(java.util.Locale)を軽くいじる
前回の続き。
影響度 | 設定範囲 |
大 | OS(シェル) |
中 | Java -Dオプション |
小 | ここらへんで解決したい! |
ってことで、Spring Frameworkでは、こんなインタフェースがあったりするようで。
実装クラスが数クラスあるようです。
例えば、
の場合、
Default is the current JVM's default locale.
とあるので、Javaのデフォルトロケールを解決してくれますね。
ただ・・・APIが悩ましい(ー”ー;
public Locale resolveLocale(HttpServletRequest request)
HttpServletRequestを与える必要があるようで(汗)。サーブレットを介する処理用ってことですかね。
なんのためにリクエストが必要なんだろ?ってことで、ソースを拝むと、
public class FixedLocaleResolver extends AbstractLocaleResolver { /** * Create a default FixedLocaleResolver, exposing a configured default * locale (or the JVM's default locale as fallback). * @see #setDefaultLocale */ public FixedLocaleResolver() { } /** * Create a FixedLocaleResolver that exposes the given locale. * @param locale the locale to expose */ public FixedLocaleResolver(Locale locale) { setDefaultLocale(locale); } public Locale resolveLocale(HttpServletRequest request) { Locale locale = getDefaultLocale(); if (locale == null) { locale = Locale.getDefault(); } return locale; } public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { throw new UnsupportedOperationException( "Cannot change fixed locale - use a different locale resolution strategy"); } }
HttpServletRequestを参照していなかった。へぇ・・・って感じです。
代わりに、
- getDefaultLocale()で解決できなかったら、Locale.getDefault()を返す。
- AbstractLocaleResolver#getDefaultLocale()では、
public abstract class AbstractLocaleResolver implements LocaleResolver { private Locale defaultLocale; /** * Set a default Locale that this resolver will return if no other locale found. */ public void setDefaultLocale(Locale defaultLocale) { this.defaultLocale = defaultLocale; } /** * Return the default Locale that this resolver is supposed to fall back to, if any. */ protected Locale getDefaultLocale() { return this.defaultLocale; } }
自身のプロパティ(defaultLocale)を返すだけ。
であれば、FixedLocaleResolverをBean定義してあげて、Bean定義時に
を個別に指定できそうですね。
いじょ
関連記事: