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_NAMELocale を保持するリクエスト属性の名前。 |
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) 指定されたリクエストのデフォルトのタイムゾーンを決定します。タイムゾーン Cookie が見つからない場合に呼び出されます。 |
protected LocaleSE | getDefaultLocale()Cookie が見つからない場合にこのリゾルバーが返す固定ロケールを返します(ある場合)。 |
protected TimeZoneSE | getDefaultTimeZone()Cookie が見つからない場合にこのリゾルバーが返す固定タイムゾーンを返します。 |
boolean | isLanguageTagCompliant() このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを返します。 |
boolean | isRejectInvalidCookies() 無効なコンテンツを含む Cookie を拒否するかどうかを返します(例: |
protected LocaleSE | parseLocaleValue(StringSE localeValue) 受信 Cookie から取得した特定のロケール値を解析します。 |
LocaleSE | resolveLocale(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールを解決します。 |
LocaleContext | resolveLocaleContext(HttpServletRequestEE request) 指定されたリクエストを介して現在のロケールコンテキストを解決します。 |
void | setDefaultLocale(LocaleSE defaultLocale)Cookie が見つからない場合にこのリゾルバーが返す固定ロケールを設定します。 |
void | setDefaultTimeZone(TimeZoneSE defaultTimeZone)Cookie が見つからない場合にこのリゾルバーが返す固定タイムゾーンを設定します。 |
void | setLanguageTagCompliant(boolean languageTagCompliant) このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを指定します。 |
void | setLocale(HttpServletRequestEE request, HttpServletResponseEE response, LocaleSE locale) 現在のロケールを指定されたロケールに設定します。 |
void | setLocaleContext(HttpServletRequestEE request, HttpServletResponseEE response, LocaleContext localeContext) 現在のロケールコンテキストを指定されたものに設定します。潜在的に関連するタイムゾーン情報を持つロケールを含みます。 |
void | setRejectInvalidCookies(boolean rejectInvalidCookies) 無効なコンテンツを含む Cookie を拒否するかどうかを指定します(例: |
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
Locale を保持するリクエスト属性の名前。現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!
RequestContext(Utils).getLocale() を使用して、コントローラーまたはビューの現在のロケールを取得します。
public static final StringSE TIME_ZONE_REQUEST_ATTRIBUTE_NAME
TimeZone を保持するリクエスト属性の名前。現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!
RequestContext(Utils).getTimeZone() を使用して、コントローラーまたはビューの現在のタイムゾーンを取得します。
public static final StringSE DEFAULT_COOKIE_NAME
public CookieLocaleResolver()
default cookie name を使用して、CookieLocaleResolver クラスの新しいインスタンスを作成します。public void setLanguageTagCompliant(boolean languageTagCompliant)
デフォルトは 5.1 の時点で true です。これを false に切り替えて、Java のレガシーロケール仕様形式をレンダリングします。解析のために、このリゾルバーは、どのような場合でもレガシー Locale.toString()SE 形式と BCP 47 言語タグを寛容に受け入れます。
public boolean isLanguageTagCompliant()
public void setRejectInvalidCookies(boolean rejectInvalidCookies)
デフォルトは true です。解析エラーの寛容な処理のためにこれをオフにし、そのような場合デフォルトのロケールとタイムゾーンにフォールバックします。
public boolean isRejectInvalidCookies()
public void setDefaultLocale(@Nullable LocaleSE defaultLocale)
@Nullable protected LocaleSE getDefaultLocale()
public void setDefaultTimeZone(@Nullable TimeZoneSE defaultTimeZone)
@Nullable 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, @Nullable HttpServletResponseEE response, @Nullable LocaleSE 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 LocaleSE parseLocaleValue(StringSE localeValue)
デフォルトの実装は StringUtils.parseLocale(String) を呼び出し、Locale.toString()SE 形式と BCP 47 言語タグを受け入れます。
localeValue - 解析するロケール値 Locale インスタンス StringUtils.parseLocale(String)protected StringSE toLocaleValue(LocaleSE locale)
デフォルトの実装では、"languageTagCompliant" 構成プロパティに応じて、Locale.toString()SE または JDK 7 の Locale.toLanguageTag()SE を呼び出します。
locale - 文字列化するロケール isLanguageTagCompliant()protected LocaleSE determineDefaultLocale(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのロケールがあればそれを返します。それ以外の場合は、リクエストの accept-header ロケールにフォールバックします。
request - ロケールを解決するためのリクエスト null)setDefaultLocale(java.util.Locale), ServletRequest.getLocale()EE@Nullable protected TimeZoneSE determineDefaultTimeZone(HttpServletRequestEE request)
デフォルトの実装は、指定されたデフォルトのタイムゾーンがあればそれを返し、そうでなければ null を返します。
request - タイムゾーンを解決するためのリクエスト null )setDefaultTimeZone(java.util.TimeZone)