我使用primefaces扩展documentViewer来显示pdf。这些文件是流式传输的,这意味着后台bean提供了一个org.primefaces.model.DefaultStreamedContent
的实例。如果显示一个大的pdf文件,直到观看者显示一些内容需要一些时间。在PF扩展网站的展示中,documentViewer
在查看器按钮栏下方显示一个加载栏。不幸的是,这并没有显示在我的情况。在陈列柜中没有使用DefaultStreamContent
。这是要归档的网址。也许我必须设置流媒体内容的总大小?这可能与DefaultStreamedContent
?Primefaces扩展documentViewer显示下载状态
2
A
回答
2
也许我必须设置总规模的流媒体内容
是的!如果事先知道响应内容的长度,客户端只能计算进度。在JSF中,您可以通过ExternalContext#setResponseContentLength()
设置响应内容长度。
前提是你要返回StreamedContent
,这里是你如何能做到这一点(基于AO Display dynamic image from database with p:graphicImage and StreamedContent):
@ManagedBean
@ApplicationScoped
public class PdfManager {
@EJB
private PdfService service;
public StreamedContent getContent() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
return new DefaultStreamedContent();
} else {
Pdf pdf = service.generateItSomehow();
context.getExternalContext().setResponseContentLength(pdf.getLength());
return new DefaultStreamedContent(pdf.getInputStream());
}
}
}
相关问题
- 1. MySQL“扩展”与“显示状态”
- 2. 延迟加载展示primefaces
- 3. 显示载入状态
- 4. Primefaces TreeNode不扩展
- 5. Firefox扩展:共享状态
- 6. 如何在状态为up的状态下显示SimpleButton状态
- 7. 在DocumentViewer中显示html MemoryStream
- 8. WPF DocumentViewer不显示文档
- 9. MySQL扩展显示
- 10. 春天MVC下载文件没有显示扩展
- 11. 动态加载php扩展
- 12. 下载和Safari扩展
- 13. Chrome扩展程序:下载
- 14. 在hg状态下显示重命名?
- 15. 不要在svn状态下显示svn:externals
- 16. 如何在xcode中使用ProgressView来显示下载的状态
- 17. 在一个主循环中显示状态并执行下载
- 18. 在iOS状态栏中显示下载进度
- 19. ngrx/strore示例应用程序,为什么子状态扩展了根状态?
- 20. iOS10今天扩展没有处于扩展状态
- 21. iOS扩展 - 检测“扩展状态更改”(后台/前台)
- 22. 保持页面重新加载后表格的扩展状态
- 23. 显示扩展ASCII字符
- 24. 扩展方法未显示
- 25. CSS列不扩展/显示
- 26. Firefox扩展:显示+ Hidding AutoCompleteRichResult
- 27. Chrome扩展后台页面状态
- 28. 如何检测状态栏的扩展?
- 29. Geb Reporter /扩展检索测试状态
- 30. ReactJS:采用扩展元更新状态
*?“也许我必须设置总规模的流媒体内容” *是!在'response.setContentLength(contentLength)'的味道。然后客户可以计算进度。 – BalusC
好吧,没有想过这个。遗憾的是我无法验证它,因为我发现我们的后端模型不能提供可靠的尺寸。如果大小设置得太大,查看器将显示PDFException。 – opfau
它必须是确切的大小(即字节数量)。你的意思是说你的PDF是基于任意数据自动生成的,因此不会(暂时)静态存储在某些数据存储中? – BalusC