1
在我的應用程序中,我使用jsf & richfaces,我想在Web瀏覽器中顯示生成的PDF,我已經在serverside中生成了這個PDF,並且它在ServletResponse中可用,但我無法在我的網頁上顯示它。如何在JSF中顯示PDF,內容來自ServletResponse
我試過this問題,但它並沒有解決我的問題。
有沒有圖書館或特殊的方式來做到這一點?
我試過的事情在下面給出。
<h:commandLink rendered="#{ fileImportOptionsViewBean.isFileExist(status.myPdf) }" action="#
{fileImportOptionsViewBean.downloadFile(satus.myPdf)}" target="_blank">
<h:graphicImage url="../../resources/xyz/icons/pdf.png" /></h:commandLink>
downloadFile方法
public void downloadFile(String filePath){
try {
File file=new File(filePath);
if(file.exists()){
FacesContext fc=FacesContext.getCurrentInstance();
ExternalContext ec=fc.getExternalContext();
ec.responseReset();
ec.setResponseContentType("application/pdf");
ec.setResponseHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
ec.setResponseBufferSize(8192);
OutputStream output = ec.getResponseOutputStream();
URL url = file.toURL();
try(
BufferedInputStream bis = new BufferedInputStream(url.openStream());
BufferedOutputStream bos = new BufferedOutputStream(output);
){
byte[] buff = new byte[8192];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
}
fc.responseComplete();
}
} catch (Exception e) {
}
}
任何幫助表示讚賞,感謝。
不,在downloadFile方法執行完美,我相信我用jsf做的也可以,但是響應不會在新打開的窗口中呈現。 –
您發佈的代碼的當前行爲是什麼?究竟發生了什麼? – Andrey