| 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)
create() メソッドのシグネチャオーバライド例を以下に示します。
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>
LocaleFactory の指定| MAP | PageMixer ドキュメント > チュートリアル > Servlet 環境における利用 > 「Locale」の確定 | << | >> |