クラス SessionLocaleResolver

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

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

これは、アプリケーションがユーザーセッションを必要とする場合、つまり、ユーザーのロケールを保存するためだけに HttpSession を作成する必要がない場合に最も適しています。セッションには、オプションで関連するタイムゾーン属性も含めることができます。または、デフォルトのタイムゾーンを指定できます。

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

CookieLocaleResolver とは対照的に、この戦略はローカルに選択されたロケール設定をサーブレットコンテナーの HttpSession に保存します。結果として、これらの設定は各セッションに対して一時的なものであるため、各セッションが終了すると失われます。

"Spring Session" プロジェクトなどの外部セッション管理メカニズムと直接的な関連はないことに注意してください。この LocaleResolver は、単に現在の HttpServletRequest に対して対応する HttpSession 属性を評価および変更します。

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

    • LOCALE_SESSION_ATTRIBUTE_NAME

      public static final StringSE LOCALE_SESSION_ATTRIBUTE_NAME
      ロケールを保持するセッション属性のデフォルト名。

      この実装によって内部的にのみ使用されます。

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

      関連事項:
    • TIME_ZONE_SESSION_ATTRIBUTE_NAME

      public static final StringSE TIME_ZONE_SESSION_ATTRIBUTE_NAME
      TimeZone を保持するセッション属性のデフォルト名。

      この実装によって内部的にのみ使用されます。

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

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

    • SessionLocaleResolver

      public SessionLocaleResolver()
  • メソッドの詳細

    • setLocaleAttributeName

      public void setLocaleAttributeName(StringSE localeAttributeName)
      HttpSession の対応する属性の名前を指定し、現在の LocaleSE 値を保持します。

      デフォルトは内部 LOCALE_SESSION_ATTRIBUTE_NAME です。

      導入:
      4.3.8
    • setTimeZoneAttributeName

      public void setTimeZoneAttributeName(StringSE timeZoneAttributeName)
      HttpSession の対応する属性の名前を指定し、現在の TimeZoneSE 値を保持します。

      デフォルトは内部 TIME_ZONE_SESSION_ATTRIBUTE_NAME です。

      導入:
      4.3.8
    • setDefaultLocaleFunction

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

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

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

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

      デフォルトの実装は、構成されたデフォルトのタイムゾーン(存在する場合)を返し、そうでない場合は 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 
      関連事項: