0

好奇心からJSF2.0アプリケーションでロケールを操作しているときに、のメソッドの実装ロジックを読み取ろうとしましgetRequestLocale()ExternalContext

javax.faces.context.ExternalContext抽象クラスです。私はそれを見つけました

  • com.sun.faces.context.ExternalContextImpl
  • javax.faces.context.ExternalContextWrapper
  • com.sun.faces.config.InitFacesContext$ServletContextAdapter

このクラスを拡張します。

それらの中で、クラスのこのメソッドの実装ServletContextAdapterはnullを返します。だから私には役に立たないと思います。

でのこのメソッドの実装ExternalContextImplは次のとおりです。

public Locale getRequestLocale(){
    return this.request.getLocale();
}

そして、次のExternalContextWrapperとおりです。

public Locale getRequestLocale() {
    return getWrapped().getRequestLocale();
}

による実装でExternalContextWrappergetWrapped()、インスタンスを返しますExternalContextExternalContextImpl実は反対かもしれませんね。

そして、このメソッドの実装でExternalContextImpl this.requestは、実際にはjavax.servlet.ServletRequestです。

ServletRequestはによって実装されているインターフェイスです

  • javax.servlet.ServletRequestWrapperと拡張
  • javax.servlet.http.HttpServletRequest

このメソッドはで見つかりませんでした。実装ではHttpServletRequest、のメソッドServletRequestWrapperと同じですExternalContextImpl

今ここで私はトラックを失いました。実際の実装を見つけることができるクラスを見つけることができません。誰かが知っているなら、私が理解するのを手伝ってください。

4

1 に答える 1

2

HttpServletRequestServletRequestメソッドを提供するextends getLocale()

ここでjavadocsを参照してください:

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocale()

そして、javadocsは次のように述べています。

Accept-Languageヘッダーに基づいて、クライアントがコンテンツを受け入れる優先ロケールを返します。クライアント要求がAccept-Languageヘッダーを提供しない場合、このメソッドはサーバーのデフォルトロケールを返します。

これがお役に立てば幸いです:)

于 2013-02-23T19:14:17.670 に答える