public class CookieLocaleResolver extends CookieGenerator implements LocaleContextResolver
LocaleResolver 実装。これは、ユーザーセッションのないステートレスアプリケーションに特に役立ちます。Cookie には、オプションで関連するタイムゾーン値も含めることができます。または、デフォルトのタイムゾーンを指定できます。
カスタムコントローラーは、リゾルバーで #setLocale(Context) を呼び出すことにより、ユーザーのロケールとタイムゾーンをオーバーライドできます。ロケール変更リクエストへの応答。より便利な代替手段として、RequestContext.changeLocale(java.util.Locale) の使用を検討してください。
setDefaultLocale(java.util.Locale), setDefaultTimeZone(java.util.TimeZone)| 修飾子と型 | フィールドと説明 |
|---|---|
static StringSE | DEFAULT_COOKIE_NAME 明示的に設定されていない場合に使用されるデフォルトの Cookie 名。 |
static StringSE | LOCALE_REQUEST_ATTRIBUTE_NAME ロケールを保持するリクエスト属性の名前。 |
static StringSE | TIME_ZONE_REQUEST_ATTRIBUTE_NAMETimeZone を保持するリクエスト属性の名前。 |
DEFAULT_COOKIE_PATH, logger| コンストラクターと説明 |
|---|
CookieLocaleResolver()default cookie name を使用して、CookieLocaleResolver クラスの新しいインスタンスを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected LocaleSE | determineDefaultLocale(HttpServletRequestEE request) 指定されたリクエストのデフォルトのロケールを決定します。ロケール Cookie が見つからない場合に呼び出されます。 |
protected TimeZoneSE | determineDefaultTimeZone(HttpServletRequestEE request) 指定されたリクエストのデフォルトのタイムゾーンを決定します。TimeZone Cookie が見つからなかった場合に呼び出されます。 |
protected LocaleSE | getDefaultLocale()Cookie が見つからない場合にこのリゾルバーが返す固定ロケールを返します(存在する場合)。 |
protected TimeZoneSE | getDefaultTimeZone()Cookie が見つからない場合にこのリゾルバーが返す固定の TimeZone を返します(ある場合)。 |
boolean | isLanguageTagCompliant() このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを返します。 |
protected LocaleSE | parseLocaleValue(StringSE locale) 受信 Cookie から取得した特定のロケール値を解析します。 |
LocaleSE | resolveLocale(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールを解決します。 |
LocaleContext | resolveLocaleContext(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールコンテキストを解決します。 |
void | setDefaultLocale(LocaleSE defaultLocale)Cookie が見つからない場合にこのリゾルバーが返す固定ロケールを設定します。 |
void | setDefaultTimeZone(TimeZoneSE defaultTimeZone)Cookie が見つからない場合にこのリゾルバーが返す固定 TimeZone を設定します。 |
void | setLanguageTagCompliant(boolean languageTagCompliant) このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを指定します。 |
void | setLocale(HttpServletRequestEE request, HttpServletResponseEE response, LocaleSE locale) 現在のロケールを指定されたロケールに設定します。 |
void | setLocaleContext(HttpServletRequestEE request, HttpServletResponseEE response, LocaleContext localeContext) 現在のロケールコンテキストを指定されたものに設定します。潜在的に関連するタイムゾーン情報を持つロケールを含みます。 |
protected StringSE | toLocaleValue(LocaleSE locale) 指定されたロケールを、Cookie に含めるためのテキスト値としてレンダリングします。 |
addCookie, createCookie, getCookieDomain, getCookieMaxAge, getCookieName, getCookiePath, isCookieHttpOnly, isCookieSecure, removeCookie, setCookieDomain, setCookieHttpOnly, setCookieMaxAge, setCookieName, setCookiePath, setCookieSecurecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final StringSE LOCALE_REQUEST_ATTRIBUTE_NAME
現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!
RequestContext(Utils).getLocale() を使用して、コントローラーまたはビューの現在のロケールを取得します。
public static final StringSE TIME_ZONE_REQUEST_ATTRIBUTE_NAME
現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!
RequestContext(Utils).getTimeZone() を使用して、コントローラーまたはビューの現在のタイムゾーンを取得します。
public static final StringSE DEFAULT_COOKIE_NAME
public CookieLocaleResolver()
default cookie name を使用して、CookieLocaleResolver クラスの新しいインスタンスを作成します。public void setLanguageTagCompliant(boolean languageTagCompliant)
false です。 メモ: このモードには JDK 7 以上が必要です。JDK 7 以降でのみ BCP 47 準拠を実現するには、このフラグを true に設定してください。
Locale.forLanguageTag(String)SE, Locale.toLanguageTag()SEpublic boolean isLanguageTagCompliant()
public void setDefaultLocale(LocaleSE defaultLocale)
protected LocaleSE getDefaultLocale()
public void setDefaultTimeZone(TimeZoneSE defaultTimeZone)
protected TimeZoneSE getDefaultTimeZone()
public LocaleSE resolveLocale(HttpServletRequestEE request)
LocaleResolverLocaleResolver の resolveLocale request - ロケールを解決するためのリクエスト null)public LocaleContext resolveLocaleContext(HttpServletRequestEE request)
LocaleContextResolver これは主にフレームワークレベルの処理を目的としています。現在のロケールやタイムゾーンへのアプリケーションレベルのアクセスには、RequestContextUtils または RequestContext の使用を検討してください。
返されるコンテキストは、タイムゾーン情報が関連付けられたロケールを含む TimeZoneAwareLocaleContext である場合があります。instanceof チェックを適用し、それに応じてダウンキャストするだけです。
カスタムリゾルバーの実装は、返されたコンテキストで追加の設定を返すこともありますが、これもダウンキャストを通じてアクセスできます。
LocaleContextResolver の resolveLocaleContext request - ロケールコンテキストを解決するためのリクエスト nullLocaleResolver.resolveLocale(HttpServletRequest), RequestContextUtils.getLocale(javax.servlet.http.HttpServletRequest), RequestContextUtils.getTimeZone(javax.servlet.http.HttpServletRequest)public void setLocale(HttpServletRequestEE request, HttpServletResponseEE response, LocaleSE locale)
LocaleResolverLocaleResolver の setLocale request - ロケール変更に使用されるリクエスト response - ロケール変更に使用されるレスポンス locale - 新しいロケール、またはロケールをクリアする null public void setLocaleContext(HttpServletRequestEE request, HttpServletResponseEE response, LocaleContext localeContext)
LocaleContextResolverLocaleContextResolver の setLocaleContext request - ロケール変更に使用されるリクエスト response - ロケール変更に使用されるレスポンス localeContext - 新しいロケールコンテキスト、またはロケールをクリアする null LocaleResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale), SimpleLocaleContext, SimpleTimeZoneAwareLocaleContext@UsesJava7 protected LocaleSE parseLocaleValue(StringSE locale)
デフォルトの実装では、"languageTagCompliant" 構成プロパティに応じて、StringUtils.parseLocaleString(String) または JDK 7 の Locale.forLanguageTag(String)SE を呼び出します。
locale - 解析するロケール値 Locale インスタンス @UsesJava7 protected StringSE toLocaleValue(LocaleSE locale)
デフォルトの実装では、"languageTagCompliant" 構成プロパティに応じて、Locale.toString()SE または JDK 7 の Locale.toLanguageTag()SE を呼び出します。
locale - 文字列化するロケール protected LocaleSE determineDefaultLocale(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのロケールがあればそれを返します。それ以外の場合は、リクエストの accept-header ロケールにフォールバックします。
request - ロケールを解決するためのリクエスト null)setDefaultLocale(java.util.Locale), ServletRequest.getLocale()EEprotected TimeZoneSE determineDefaultTimeZone(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのタイムゾーンがあればそれを返し、そうでなければ null を返します。
request - タイムゾーンを解決するためのリクエスト null )setDefaultTimeZone(java.util.TimeZone)