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_NAME TimeZone を保持するセッション属性の名前。 |
コンストラクターと説明 |
---|
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 の対応する属性の名前を指定し、現在の Locale SE 値を保持します。 |
void | setLocaleContext(HttpServletRequestEE request, HttpServletResponseEE response, LocaleContext localeContext) 現在のロケールコンテキストを指定されたものに設定します。潜在的に関連するタイムゾーン情報を持つロケールを含みます。 |
void | setTimeZoneAttributeName(StringSE timeZoneAttributeName) HttpSession の対応する属性の名前を指定し、現在の TimeZone SE 値を保持します。 |
getDefaultTimeZone, setDefaultTimeZone, setLocale
getDefaultLocale, setDefaultLocale
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public 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)
LocaleResolver
LocaleResolver
の resolveLocale
AbstractLocaleContextResolver
の resolveLocale
request
- ロケールを解決するためのリクエスト null
)public LocaleContext resolveLocaleContext(HttpServletRequestEE request)
LocaleContextResolver
これは主にフレームワークレベルの処理を目的としています。現在のロケールやタイムゾーンへのアプリケーションレベルのアクセスには、RequestContextUtils
または RequestContext
の使用を検討してください。
返されるコンテキストは、タイムゾーン情報が関連付けられたロケールを含む TimeZoneAwareLocaleContext
である場合があります。instanceof
チェックを適用し、それに応じてダウンキャストするだけです。
カスタムリゾルバーの実装は、返されたコンテキストで追加の設定を返すこともありますが、これもダウンキャストを通じてアクセスできます。
request
- ロケールコンテキストを解決するためのリクエスト null
LocaleResolver.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)
LocaleContextResolver
request
- ロケール変更に使用されるリクエスト response
- ロケール変更に使用されるレスポンス localeContext
- 新しいロケールコンテキスト、またはロケールをクリアする null
LocaleResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale)
, SimpleLocaleContext
, SimpleTimeZoneAwareLocaleContext
protected 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)