繁体   English   中英

ExternalContext.getRequestLocale()的实现

[英]Implementation of ExternalContext.getRequestLocale()

出于好奇,在我的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是一个实现的接口

  • javax.servlet.ServletRequestWrapper并扩展
  • javax.servlet.http.HttpServletRequest

我没有在HttpServletRequestServletRequestWrapper找到这个方法,实现与ExternalContextImpl的实现相同。

现在我在这里失去了赛道。 我无法找到哪个类可以找到实际的实现。 如果有人知道请帮助我理解。

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

在这里查看javadoc:

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

javadocs说:

根据Accept-Language标头返回客户端将接受内容的首选Locale。 如果客户端请求未提供Accept-Language标头,则此方法返回服务器的默认区域设置。

我希望这有帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM