クラス CookieLocaleResolver

実装されているすべてのインターフェース:
LocaleContextResolver, LocaleResolver

public class CookieLocaleResolver extends AbstractLocaleContextResolver
カスタム設定の場合にユーザーに返送される Cookie を使用し、構成されたデフォルトロケール、リクエストの Accept-Language ヘッダー、サーバーのデフォルトロケールにフォールバックする LocaleResolver 実装。

これは、ユーザーセッションのないステートレスアプリケーションに特に役立ちます。Cookie には、オプションで関連するタイムゾーン値も含めることができます。または、デフォルトのタイムゾーンを指定できます。

カスタムコントローラーは、リゾルバーで #setLocale(Context) を呼び出すことによって、ユーザーのロケールとタイムゾーンをオーバーライドできます (たとえば、ロケール変更リクエストに応答するなど)。より便利な代替手段として、RequestContext.changeLocale(Locale) の使用を検討してください。

導入:
27.02.2003
作成者:
Juergen Hoeller, Jean-Pierre Pawlak, Vedran Pavic, Sam Brannen
関連事項:
  • フィールドの詳細

    • LOCALE_REQUEST_ATTRIBUTE_NAME

      public static final StringSE LOCALE_REQUEST_ATTRIBUTE_NAME
      Locale を保持するリクエスト属性の名前。

      現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!

      RequestContext(Utils).getLocale() を使用して、コントローラーまたはビューの現在のロケールを取得します。

      関連事項:
    • TIME_ZONE_REQUEST_ATTRIBUTE_NAME

      public static final StringSE TIME_ZONE_REQUEST_ATTRIBUTE_NAME
      TimeZone を保持するリクエスト属性の名前。

      現在のリクエストの過程でロケールが変更された場合にのみ、Cookie 値をオーバーライドするために使用されます!

      RequestContext(Utils).getTimeZone() を使用して、コントローラーまたはビューの現在のタイムゾーンを取得します。

      関連事項:
  • コンストラクターの詳細

    • CookieLocaleResolver

      public CookieLocaleResolver(StringSE cookieName)
      指定された Cookie 名を持つコンストラクター。
      導入:
      6.0
    • CookieLocaleResolver

      public CookieLocaleResolver()
      デフォルトの Cookie name を持つコンストラクター。
  • メソッドの詳細

    • setCookieMaxAge

      public void setCookieMaxAge(DurationSE cookieMaxAge)
      Cookie "Max-Age" 属性を設定します。

      デフォルトでは、これは -1 に設定されており、この場合、Cookie はブラウザーがシャットダウンするまで保持されます。

      導入:
      6.0
      関連事項:
    • setCookiePath

      public void setCookiePath(@Nullable StringSE cookiePath)
      Cookie "Path" 属性を設定します。

      デフォルトでは、これは "/" に設定されています。

      関連事項:
    • setCookieDomain

      public void setCookieDomain(@Nullable StringSE cookieDomain)
      Cookie "Domain" 属性を設定します。
      関連事項:
    • setCookieSecure

      public void setCookieSecure(boolean cookieSecure)
      "Secure" 属性を Cookie に追加します。
      関連事項:
    • setCookieHttpOnly

      public void setCookieHttpOnly(boolean cookieHttpOnly)
      "HttpOnly" 属性を Cookie に追加します。
      関連事項:
    • setCookieSameSite

      public void setCookieSameSite(StringSE cookieSameSite)
      "SameSite" 属性を Cookie に追加します。

      デフォルトでは、これは "Lax" に設定されています。

      導入:
      6.0
      関連事項:
    • setLanguageTagCompliant

      public void setLanguageTagCompliant(boolean languageTagCompliant)
      このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを指定します。

      デフォルトは 5.1 の時点で true です。これを false に切り替えて、Java のレガシーロケール仕様形式をレンダリングします。解析のために、このリゾルバーは、どのような場合でもレガシー Locale.toString() 形式と BCP 47 言語タグを寛容に受け入れます。

      導入:
      4.3
      関連事項:
    • isLanguageTagCompliant

      public boolean isLanguageTagCompliant()
      このリゾルバーの Cookie が Java のレガシーロケール仕様形式ではなく、BCP 47 言語タグに準拠する必要があるかどうかを返します。
      導入:
      4.3
    • setRejectInvalidCookies

      public void setRejectInvalidCookies(boolean rejectInvalidCookies)
      無効なコンテンツ (無効な形式など) を含む Cookie を拒否するかどうかを指定します。

      デフォルトは true です。解析エラーの寛容な処理のためにこれをオフにし、そのような場合デフォルトのロケールとタイムゾーンにフォールバックします。

      導入:
      5.1.7
      関連事項:
    • isRejectInvalidCookies

      public boolean isRejectInvalidCookies()
      無効なコンテンツ (無効な形式など) を含む Cookie を拒否するかどうかを返します。
      導入:
      5.1.7
    • setDefaultLocaleFunction

      public void setDefaultLocaleFunction(FunctionSE<jakarta.servlet.http.HttpServletRequest, LocaleSE> defaultLocaleFunction)
      指定されたリクエストのデフォルトロケールを決定するために使用される関数を設定します。ロケール Cookie が見つからない場合に呼び出されます。

      デフォルトの実装は、構成されたデフォルトのロケールを返します(存在する場合)。それ以外の場合は、リクエストの Accept-Language ヘッダーロケールまたはサーバーのデフォルトのロケールにフォールバックします。

      パラメーター:
      defaultLocaleFunction - デフォルトのロケールを決定するために使用される関数
      導入:
      6.0
      関連事項:
    • setDefaultTimeZoneFunction

      public void setDefaultTimeZoneFunction(FunctionSE<jakarta.servlet.http.HttpServletRequest, @Nullable TimeZoneSE> defaultTimeZoneFunction)
      指定されたリクエストのデフォルトのタイムゾーンを決定するために使用される関数を設定します。ロケール Cookie が見つからない場合に呼び出されます。

      デフォルトの実装は、構成されたデフォルトのタイムゾーン(存在する場合)を返し、そうでない場合は null を返します。

      パラメーター:
      defaultTimeZoneFunction - デフォルトのタイムゾーンを決定するために使用される関数
      導入:
      6.0
      関連事項:
    • resolveLocale

      public LocaleSE resolveLocale(jakarta.servlet.http.HttpServletRequest request)
      インターフェースからコピーされた説明: LocaleResolver
      指定されたリクエストを介して現在のロケールを解決します。

      いずれの場合も、デフォルトのロケールをフォールバックとして返すことができます。

      パラメーター:
      request - ロケールを解決するためのリクエスト
      戻り値:
      現在のロケール (非 null)
    • resolveLocaleContext

      public LocaleContext resolveLocaleContext(jakarta.servlet.http.HttpServletRequest request)
      インターフェースからコピーされた説明: LocaleContextResolver
      指定されたリクエストを介して現在のロケールコンテキストを解決します。

      これは主にフレームワークレベルの処理を目的としています。現在のロケールやタイムゾーンへのアプリケーションレベルのアクセスには、RequestContextUtils または RequestContext の使用を検討してください。

      返されるコンテキストは、タイムゾーン情報が関連付けられたロケールを含む TimeZoneAwareLocaleContext である場合があります。instanceof チェックを適用し、それに応じてダウンキャストするだけです。

      カスタムリゾルバーの実装は、返されたコンテキストで追加の設定を返すこともありますが、これもダウンキャストを通じてアクセスできます。

      パラメーター:
      request - ロケールコンテキストを解決するためのリクエスト
      戻り値:
      現在のロケールコンテキスト(非 null
      関連事項:
    • setLocaleContext

      public void setLocaleContext(jakarta.servlet.http.HttpServletRequest request, @Nullable jakarta.servlet.http.HttpServletResponse response, @Nullable LocaleContext localeContext)
      インターフェースからコピーされた説明: LocaleContextResolver
      現在のロケールコンテキストを指定されたものに設定します。潜在的に関連するタイムゾーン情報を持つロケールを含みます。
      パラメーター:
      request - ロケール変更に使用されるリクエスト
      response - ロケール変更に使用されるレスポンス
      localeContext - 新しいロケールコンテキスト、またはロケールをクリアする null 
      関連事項:
    • parseLocaleValue

      protected @Nullable LocaleSE parseLocaleValue(StringSE localeValue)
      受信 Cookie から取得した特定のロケール値を解析します。

      デフォルトの実装は StringUtils.parseLocale(String) を呼び出し、Locale.toString() 形式と BCP 47 言語タグを受け入れます。

      パラメーター:
      localeValue - 解析するロケール値
      戻り値:
      対応する Locale インスタンス
      導入:
      4.3
      関連事項:
    • toLocaleValue

      protected StringSE toLocaleValue(LocaleSE locale)
      指定されたロケールを、Cookie に含めるためのテキスト値としてレンダリングします。

      デフォルトの実装では、"languageTagCompliant" 構成プロパティに応じて、Locale.toString() または Locale.toLanguageTag() が呼び出されます。

      パラメーター:
      locale - 文字列に変換するロケール
      戻り値:
      指定されたロケールの文字列表現
      導入:
      4.3
      関連事項: