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