gpt4 book ai didi

java - 实现ExternalContext.getRequestLocale()

转载 作者:行者123 更新时间:2023-12-02 07:14:59 25 4
gpt4 key购买 nike

出于好奇,在我的 JSF 2.0 应用程序中使用 Locale 时,我尝试阅读 ExternalContext 的方法 getRequestLocale() 的实现逻辑。

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();
}

ExternalContextWrapper 的实现中,getWrapped() 返回一个实例 ExternalContext。我猜它实际上可能是 ExternalContextImpl 对象。

而在ExternalContextImpl中这个方法的实现中,this.request其实就是javax.servlet.ServletRequest

现在ServletRequest是一个由

实现的接口(interface)
  • javax.servlet.ServletRequestWrapper 并扩展
  • javax.servlet.http.HttpServletRequest

我在HttpServletRequest中没有找到这个方法,在ServletRequestWrapper中其实现与ExternalContextImpl相同。

现在我迷失了方向。我无法找到在哪个类中可以找到实际的实现。如果有人知道请帮助我理解。

最佳答案

HttpServletRequest 扩展了 ServletRequest,它提供了 getLocale() 方法。

请参阅此处的 javadoc:

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

javadoc 说:

Returns the preferred Locale that the client will accept content in, based on the Accept-Language header. If the client request doesn't provide an Accept-Language header, this method returns the default locale for the server.

我希望这有帮助:)

关于java - 实现ExternalContext.getRequestLocale(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com