[英]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
。 我没有在HttpServletRequest
和ServletRequestWrapper
找到这个方法,实现与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.