Jsf 在Primefaces Extensions documentViewer中加载内容

Jsf 在Primefaces Extensions documentViewer中加载内容,jsf,primefaces,primefaces-extensions,Jsf,Primefaces,Primefaces Extensions,我正在像这样将StreamedContent加载到文档查看器中 xhtml: <h:body> <h:form> <p:commandButton value="Content A" action="#{viewer.selectContentA()}" update="viewerForm" /> <p:commandButton value="Content B" action="#{viewer.select

我正在像这样将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;
}
问题:
有没有办法在不更新整个组件的情况下更改查看器中的文档

更新“整个”组件有什么问题?问题是,如果您打开一个新文档,而页面的其余部分保持静态,则这将变得异常。我正在寻找一种解决方案,使其工作更顺畅,就像在showcase上在“Url”、“资源”和“StreamedContent”之间切换一样,因此我希望查看器保持原样,只更新其内容。在showcase中,您切换到三个不同的选项卡。你总是可以使用类似的东西。定义2个查看器,加载一个,单击按钮,在后台加载另一个,完成后,通过javascript切换“查看器”。您可以查看源代码,查看是否有javascript API来切换文档(查看器基于Mozilla pdf.js,因此有很多信息)。Documentviewer使用iFrame从流式源代码动态加载内容。我不认为有一种方法可以按照当前的工作方式来更新查看器的内容。它会创建一个dynamic.xhtml文档来加载流内容并传递给文档查看器。