FacesContext
和之间有什么区别ExternalContext
?我什么时候可以使用其中一个?什么有一个什么有另一个?
以下示例来自JavaServer Faces第3版:
<h:commandButton ... actionListener="#{rushmore.handleMouseClick}" />
Run Code Online (Sandbox Code Playgroud)
支持豆:
public void handleMouseClick(ActionEvent e) {
FacesContext context = FacesContext.getCurrentInstance();
String clientId = e.getComponent().getClientId(context);
Map<String, String> requestParams = context.getExternalContext().getRequestParameterMap();
// ...
}
Run Code Online (Sandbox Code Playgroud)
为什么请求参数在ExternalContext
?什么是clientId
?它是在应用程序启动时由JSF生成的吗?
我正在尝试获取InputStream
托管豆中的PNG文件,如下所示:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
InputStream input = externalContext.getResourceAsStream("/myFile.png");
// input is null.
Run Code Online (Sandbox Code Playgroud)
但是,InputStream
始终为null。这是怎么引起的,我该如何解决?