【发布时间】:2018-08-13 12:38:07
【问题描述】:
我正在像这样将 StreamedContent 加载到文档查看器中。
xhtml:
<h:body>
<h:form>
<p:commandButton value="Content A" action="#{viewer.selectContentA()}" update="viewerForm" />
<p:commandButton value="Content B" action="#{viewer.selectContentB()}" update="viewerForm" />
</h:form>
<h:form id="viewerForm">
<pe:documentViewer value="#{viewer.content}" download="demo.pdf" height="500"/>
</h:form>
</h:body>
豆:
public void selectContentA() {
content = contentA;
}
public void selectContentB() {
content = contentB;
}
public StreamedContent getContent() {
return content;
}
问题: 有没有办法在不更新整个组件的情况下更改查看器中的文档?
【问题讨论】:
-
更新“整体”组件有什么问题?
-
问题是,如果您打开一个新文档而页面的其余部分保持静止,这会变得很烦人。我正在寻找一种解决方案,让它更顺利地工作,就像在“Url”、“资源”和“StreamedContent”之间切换时的展示柜primefaces.org/showcase-ext/sections/documentviewer/basic.jsf 所以我希望查看器保持原样并更新它的内容。
-
在展示中,您切换到三个不同的选项卡。你总是可以使用类似的东西。定义 2 个查看器,加载一个,单击一个按钮,在后台加载另一个,完成后,通过 javascript 切换“查看器”。您可以查看源代码,看看是否有用于切换文档的 javascript API(查看器是基于 Mozilla pdf.js,所以有很多信息)
-
Documentviewer 使用 iFrame 从您的流媒体源动态加载内容。我认为没有一种方法可以按照当前的工作方式更新查看器的内容。它会创建一个 dynamic.xhtml 文档来加载您的流内容并传递给文档查看器。
标签: jsf primefaces primefaces-extensions