出于好奇,在我的 JSF 2.0 应用程序中使用 Locale 时,我尝试getRequestLocale()阅读ExternalContext.
javax.faces.context.ExternalContext是一个抽象类。我发现
com.sun.faces.context.ExternalContextImpljavax.faces.context.ExternalContextWrappercom.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.
现在我在这里迷失了方向。我无法找到在哪个类中可以找到实际的实现。如果有人知道,请帮助我理解。