页面重新加载后恢复primefaces documentViewer

时间:2016-08-15 13:46:16

标签: jsf-2 primefaces primefaces-extensions

我正在使用来自primefaces-extensions的documentViewer-component,如下所示:

<pe:documentViewer cache="true" value="#{myBean.streamedContent}"/>  

myBean是SessionScoped。

如果我重新加载页面,则调用getter并且streamedContent不为空,但查看器显示空白页面并显示消息stream must have data

如何在页面重新加载时在查看器中恢复文档?

1 个答案:

答案 0 :(得分:1)

我已使用PrimeFaces Extensions Showcase重现了您的问题,因此我使用了以下代码

ByteArrayOutputStream out = new ByteArrayOutputStream();  

Document document = new Document();  
PdfWriter.getInstance(document, out);  
document.open();  

for (int i = 0; i < 50; i++) {  
      document.add(new Paragraph("All work and no play makes Jack a dull boy"));  
}  

document.close();  
content = new DefaultStreamedContent(new ByteArrayInputStream(out.toByteArray()), "application/pdf");

但我找到了解决方案。只有使用DefaultStreamedContent才会出现问题,但是当我检查了层次结构时,我发现还可以使用ByteArrayContent。它甚至在页面重新加载后也能正常工作。

样本用法:

content = new ByteArrayContent(out.toByteArray(), "application/pdf");