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 java.lang.String | DEFAULT_COOKIE_NAME 明示的に設定されていない場合に使用されるデフォルトの Cookie 名。 |
static java.lang.String | LOCALE_REQUEST_ATTRIBUTE_NAME ロケールを保持するリクエスト属性の名前。 |
static java.lang.String | TIME_ZONE_REQUEST_ATTRIBUTE_NAMETimeZone を保持するリクエスト属性の名前。 |
DEFAULT_COOKIE_PATH, logger| コンストラクターと説明 |
|---|
CookieLocaleResolver()default cookie name を使用して、CookieLocaleResolver クラスの新しいインスタンスを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected java.util.Locale | determineDefaultLocale(HttpServletRequestEE request) 指定されたリクエストのデフォルトのロケールを決定します。ロケール Cookie が見つからない場合に呼び出されます。 |
protected java.util.TimeZone | determineDefaultTimeZone(HttpServletRequestEE request) 指定されたリクエストのデフォルトのタイムゾーンを決定します。TimeZone Cookie が見つからなかった場合に呼び出されます。 |
protected java.util.Locale | getDefaultLocale()Cookie が見つからない場合にこのリゾルバーが返す固定ロケールを返します(存在する場合)。 |
protected java.util.TimeZone | getDefaultTimeZone()Cookie が見つからない場合にこのリゾルバーが返す固定の TimeZone を返します(ある場合)。 |
boolean | isLanguageTagCompliant() このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを返します。 |
protected java.util.Locale | parseLocaleValue(java.lang.String localeValue) 受信 Cookie から取得した特定のロケール値を解析します。 |
java.util.Locale | resolveLocale(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールを解決します。 |
LocaleContext | resolveLocaleContext(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールコンテキストを解決します。 |
void | setDefaultLocale(java.util.Locale defaultLocale)Cookie が見つからない場合にこのリゾルバーが返す固定ロケールを設定します。 |
void | setDefaultTimeZone(java.util.TimeZone defaultTimeZone)Cookie が見つからない場合にこのリゾルバーが返す固定 TimeZone を設定します。 |
void | setLanguageTagCompliant(boolean languageTagCompliant) このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを指定します。 |
void | setLocale(HttpServletRequestEE request, HttpServletResponseEE response, java.util.Locale locale) 現在のロケールを指定されたロケールに設定します。 |
void | setLocaleContext(HttpServletRequestEE request, HttpServletResponseEE response, LocaleContext localeContext) 現在のロケールコンテキストを指定されたものに設定します。潜在的に関連するタイムゾーン情報を持つロケールを含みます。 |
protected java.lang.String | toLocaleValue(java.util.Locale locale) 指定されたロケールを、Cookie に含めるためのテキスト値としてレンダリングします。 |
addCookie, createCookie, getCookieDomain, getCookieMaxAge, getCookieName, getCookiePath, isCookieHttpOnly, isCookieSecure, removeCookie, setCookieDomain, setCookieHttpOnly, setCookieMaxAge, setCookieName, setCookiePath, setCookieSecurepublic static final java.lang.String LOCALE_REQUEST_ATTRIBUTE_NAME
現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!
RequestContext(Utils).getLocale() を使用して、コントローラーまたはビューの現在のロケールを取得します。
public static final java.lang.String TIME_ZONE_REQUEST_ATTRIBUTE_NAME
現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!
RequestContext(Utils).getTimeZone() を使用して、コントローラーまたはビューの現在のタイムゾーンを取得します。
public static final java.lang.String DEFAULT_COOKIE_NAME
public CookieLocaleResolver()
default cookie name を使用して、CookieLocaleResolver クラスの新しいインスタンスを作成します。public void setLanguageTagCompliant(boolean languageTagCompliant)
5.1 では、デフォルトは true です。これを false に切り替えて、Java のレガシーロケール仕様フォーマットをレンダリングします。解析のために、このリゾルバーは、レガシー Locale.toString() 形式と BCP47 言語タグをどのような場合でも寛大に受け入れます。
parseLocaleValue(String), toLocaleValue(Locale), Locale.forLanguageTag(String), Locale.toLanguageTag()public boolean isLanguageTagCompliant()
public void setDefaultLocale(@Nullable java.util.Locale defaultLocale)
@Nullable protected java.util.Locale getDefaultLocale()
public void setDefaultTimeZone(@Nullable java.util.TimeZone defaultTimeZone)
@Nullable protected java.util.TimeZone getDefaultTimeZone()
public java.util.Locale 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, @Nullable HttpServletResponseEE response, @Nullable java.util.Locale locale)
LocaleResolverLocaleResolver 内の setLocale request - ロケール変更に使用されるリクエスト response - ロケール変更に使用されるレスポンス locale - 新しいロケール、またはロケールをクリアする null public void setLocaleContext(HttpServletRequestEE request, @Nullable HttpServletResponseEE response, @Nullable LocaleContext localeContext)
LocaleContextResolverLocaleContextResolver 内の setLocaleContext request - ロケール変更に使用されるリクエスト response - ロケール変更に使用されるレスポンス localeContext - 新しいロケールコンテキスト、またはロケールをクリアする null LocaleResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale), SimpleLocaleContext, SimpleTimeZoneAwareLocaleContext@Nullable protected java.util.Locale parseLocaleValue(java.lang.String localeValue)
デフォルトの実装は StringUtils.parseLocale(String) を呼び出し、Locale.toString() 形式と BCP47 言語タグを受け入れます。
localeValue - 解析するロケール値 Locale インスタンス StringUtils.parseLocale(String)protected java.lang.String toLocaleValue(java.util.Locale locale)
デフォルトの実装では、"languageTagCompliant" 構成プロパティに応じて、Locale.toString() または JDK7 の Locale.toLanguageTag() が呼び出されます。
locale - 文字列化するロケール isLanguageTagCompliant()@Nullable protected java.util.Locale determineDefaultLocale(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのロケールがあればそれを返します。それ以外の場合は、リクエストの accept-header ロケールにフォールバックします。
request - ロケールを解決するためのリクエスト null ではない)setDefaultLocale(java.util.Locale), ServletRequest.getLocale()EE@Nullable protected java.util.TimeZone determineDefaultTimeZone(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのタイムゾーンがあればそれを返し、そうでなければ null を返します。
request - タイムゾーンを解決するためのリクエスト null )setDefaultTimeZone(java.util.TimeZone)