MAP | PageMixer ドキュメント > チュートリアル > Servlet 環境における利用 > 「Locale」の確定 | << | >> |
本節では、
PageServlet
を使用する際の
Locale
確定のカスタマイズ方法について説明します。
ロケールに応じた応答の描画に興味が無い場合は、 本節を読み飛ばしても構いません。
本節におけるクラス図を以下に示します。
色づけされているのが本節で定義するクラスで、 それ以外は PageMixer において定義済みです。
本チュートリアルでは、 クラスは全てクラス名のみで表記されています。 完全な名称は以下の通りです。
記述 | 完全名 |
---|---|
ConsumerContext | jp.ne.dti.lares.foozy.pagemixer.mixer.ConsumerContext |
LocaleFactory | jp.ne.dti.lares.foozy.pagemixer.servlet.LocaleFactory |
PageServlet | jp.ne.dti.lares.foozy.pagemixer.servlet.PageServlet |
ParameterKey | jp.ne.dti.lares.foozy.pagemixer.servlet.ParameterKey |
SessionKey | jp.ne.dti.lares.foozy.pagemixer.servlet.SessionKey |
記述 | 完全名 |
---|---|
CustomLocaleFactory | pagemixer.servlet.CustomLocaleFactory |
Servlet API は、
当該要求における Locale
を取得するために
HttpServletRequest#getLocale()
を提供しています。
それに加えて、
PageMixer 環境での
Locale
確定のカスタマイズにより、
要求ごとの Locale
を他の方法で確定することができます。
例えば:
Locale
を使用する
Locale
値を使用する
Locale
名を取得する
Locale
を使用する
LocaleFactory
のオーバロードPageMixer は
Locale
確定をカスタマイズするために
"LocaleFactory
" を提供しています。
このクラスは、
複雑な用途のために他にもオーバライド可能なメソッドを備えていますが、
ほとんど全てのケースにおいて、
create
メソッドをオーバライドすることで要求を満たすことができると思われます。
他のメソッドの詳細は API ドキュメントを参照してください。
public Locale create(ConsumerContext context)
オーバライド例を以下に示します。
String value = (String)(context.getValue(KEY_PARAM_LOCALE)); Locale locale = (Locale)(context.getValue(KEY_SESSION_LOCALE)); if(null != value){ locale = new Locale(value, "", ""); context.setValue(KEY_SESSION_LOCALE, locale); } else if(null == locale){ locale = Locale.getDefault(); } return locale;
この例における
KEY_PARAM_LOCALE
および
KEY_SESSION_LOCALE
はそれぞれ
ParameterKey
および
SessionKey
のインスタンスです。
そのため、上記例では以下の手順で Locale
を確定します。
Locale
を生成する
Locale
がセッションに格納されている場合はそれを使用する
Locale
を使用する
LocaleFactory
は特に初期化パラメータを必要としません。
カスタマイズした LocaleFactory
クラスを使用する場合、
配備記述子において、
Servlet の init-param として
"servlet.localeFactory
"
を以下のように指定する必要があります。
<init-param> <param-name> servlet.localeFactory </param-name> <param-value> pagemixer.servlet.CustomLocaleFactory </param-value> </init-param>
MAP | PageMixer ドキュメント > チュートリアル > Servlet 環境における利用 > 「Locale」の確定 | << | >> |