Primefaces DefaultStreamedContent输入流

Primefaces DefaultStreamedContent输入流,primefaces,inputstream,Primefaces,Inputstream,我正在使用PF 3.4.2,只想知道DefaultStreamedContent是否处理关闭使用的inputstream?因为当我尝试在finally块中自己执行时,会导致异常。Primefaces处理关闭DefaultStreamedContent中使用的流,我检查了fie下载侦听器的实现: public void processAction(ActionEvent ActionEvent)抛出AbortProcessingException{ FacesContext FacesContex

我正在使用PF 3.4.2,只想知道DefaultStreamedContent是否处理关闭使用的inputstream?因为当我尝试在finally块中自己执行时,会导致异常。

Primefaces处理关闭DefaultStreamedContent中使用的流,我检查了fie下载侦听器的实现:

public void processAction(ActionEvent ActionEvent)抛出AbortProcessingException{
FacesContext FacesContext=FacesContext.getCurrentInstance();
ELContext ELContext=facesContext.getELContext();
StreamedContent content=(StreamedContent)value.getValue(elContext);
if(content==null){
返回;
}
ExternalContext=facesContext.getExternalContext();
字符串contentDispositionValue=contentDisposition!=null?(字符串)contentDisposition.getValue(elContext):“附件”;
试一试{
setResponseContentType(content.getContentType());
externalContext.setResponseHeader(“内容处置”,contentDispositionValue+“文件名=\”“+Content.getName()+”\”);
addResponseCookie(Constants.DOWNLOAD_COOKIE,“true”,新HashMap());
字节[]缓冲区=新字节[2048];
整数长度;
InputStream InputStream=content.getStream();
OutputStream OutputStream=externalContext.getResponseOutputStream();
而((长度=(inputStream.read(缓冲区))!=-1){
写入(缓冲区,0,长度);
}
setResponseStatus(200);
externalContext.responseFlushBuffer();
content.getStream().close();
facesContext.responseComplete();
}
捕获(IOE异常){
抛开新面孔(e);
}
}