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_NAME TimeZone を保持するリクエスト属性の名前。 |
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, setCookieSecure
public 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)
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 java.util.Locale 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 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)