public class SessionLocaleResolver extends AbstractLocaleContextResolver
LocaleResolver 実装。指定されたデフォルトロケールまたはリクエストの accept-header ロケールへのフォールバックを使用します。 これは、アプリケーションがユーザーセッションを必要とする場合、つまり、ユーザーのロケールを保存するためだけに HttpSession を作成する必要がない場合に最も適しています。セッションには、オプションで関連するタイムゾーン属性も含めることができます。または、デフォルトのタイムゾーンを指定できます。
カスタムコントローラーは、リゾルバーで #setLocale(Context) を呼び出すことにより、ユーザーのロケールとタイムゾーンをオーバーライドできます。ロケール変更リクエストへの応答。より便利な代替手段として、RequestContext.changeLocale(java.util.Locale) の使用を検討してください。
CookieLocaleResolver とは対照的に、この戦略はローカルに選択されたロケール設定をサーブレットコンテナーの HttpSession に保存します。結果として、これらの設定は各セッションに対して一時的なものであるため、各セッションが終了すると失われます。
"Spring Session" プロジェクトなどの外部セッション管理メカニズムと直接的な関連はないことに注意してください。この LocaleResolver は、単に現在の HttpServletRequest に対して対応する HttpSession 属性を評価および変更します。
AbstractLocaleResolver.setDefaultLocale(java.util.Locale), AbstractLocaleContextResolver.setDefaultTimeZone(java.util.TimeZone)| 修飾子と型 | フィールドと説明 |
|---|---|
static StringSE | LOCALE_SESSION_ATTRIBUTE_NAME ロケールを保持するセッション属性の名前。 |
static StringSE | TIME_ZONE_SESSION_ATTRIBUTE_NAMETimeZone を保持するセッション属性の名前。 |
| コンストラクターと説明 |
|---|
SessionLocaleResolver() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected LocaleSE | determineDefaultLocale(HttpServletRequestEE request) ロケールセッション属性が見つからない場合に呼び出される、指定されたリクエストのデフォルトロケールを決定します。 |
protected TimeZoneSE | determineDefaultTimeZone(HttpServletRequestEE request) 指定されたリクエストのデフォルトのタイムゾーンを決定します。TimeZone セッション属性が見つからない場合に呼び出されます。 |
LocaleSE | resolveLocale(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールを解決します。 |
LocaleContext | resolveLocaleContext(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールコンテキストを解決します。 |
void | setLocaleAttributeName(StringSE localeAttributeName)HttpSession の対応する属性の名前を指定し、現在の LocaleSE 値を保持します。 |
void | setLocaleContext(HttpServletRequestEE request, HttpServletResponseEE response, LocaleContext localeContext) 現在のロケールコンテキストを指定されたものに設定します。潜在的に関連するタイムゾーン情報を持つロケールを含みます。 |
void | setTimeZoneAttributeName(StringSE timeZoneAttributeName)HttpSession の対応する属性の名前を指定し、現在の TimeZoneSE 値を保持します。 |
getDefaultTimeZone, setDefaultTimeZone, setLocalegetDefaultLocale, setDefaultLocalecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final StringSE LOCALE_SESSION_ATTRIBUTE_NAME
RequestContext(Utils).getLocale() を使用して、コントローラーまたはビューの現在のロケールを取得します。
public static final StringSE TIME_ZONE_SESSION_ATTRIBUTE_NAME
RequestContext(Utils).getTimeZone() を使用して、コントローラーまたはビューの現在のタイムゾーンを取得します。
public void setLocaleAttributeName(StringSE localeAttributeName)
public void setTimeZoneAttributeName(StringSE timeZoneAttributeName)
public LocaleSE resolveLocale(HttpServletRequestEE request)
LocaleResolverLocaleResolver の resolveLocale AbstractLocaleContextResolver の resolveLocale request - ロケールを解決するためのリクエスト null)public LocaleContext resolveLocaleContext(HttpServletRequestEE request)
LocaleContextResolver これは主にフレームワークレベルの処理を目的としています。現在のロケールやタイムゾーンへのアプリケーションレベルのアクセスには、RequestContextUtils または RequestContext の使用を検討してください。
返されるコンテキストは、タイムゾーン情報が関連付けられたロケールを含む TimeZoneAwareLocaleContext である場合があります。instanceof チェックを適用し、それに応じてダウンキャストするだけです。
カスタムリゾルバーの実装は、返されたコンテキストで追加の設定を返すこともありますが、これもダウンキャストを通じてアクセスできます。
request - ロケールコンテキストを解決するためのリクエスト nullLocaleResolver.resolveLocale(HttpServletRequest), RequestContextUtils.getLocale(javax.servlet.http.HttpServletRequest), RequestContextUtils.getTimeZone(javax.servlet.http.HttpServletRequest)public void setLocaleContext(HttpServletRequestEE request, @Nullable HttpServletResponseEE response, @Nullable LocaleContext localeContext)
LocaleContextResolverrequest - ロケール変更に使用されるリクエスト response - ロケール変更に使用されるレスポンス localeContext - 新しいロケールコンテキスト、またはロケールをクリアする null LocaleResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale), SimpleLocaleContext, SimpleTimeZoneAwareLocaleContextprotected LocaleSE determineDefaultLocale(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのロケールがあればそれを返します。それ以外の場合は、リクエストの accept-header ロケールにフォールバックします。
request - ロケールを解決するためのリクエスト null)AbstractLocaleResolver.setDefaultLocale(java.util.Locale), ServletRequest.getLocale()EE@Nullable protected TimeZoneSE determineDefaultTimeZone(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのタイムゾーンがあればそれを返し、そうでなければ null を返します。
request - タイムゾーンを解決するためのリクエスト null )AbstractLocaleContextResolver.setDefaultTimeZone(java.util.TimeZone)