使用 p:media 或 p:documentViewer 和 p:dialog 动态

use p:media or p:documentViewer with p:dialog dynamic

首先你应该知道我是使用jsf开发web应用程序的新手,所以如果我问的不好的地方请指正。

我需要开发一个 table 来显示一个 pdf 文件的描述和一个在对话框中显示它的按钮,(重要的是应该不能下载、复制或打印这个文件)。我用尽了我所有的可能性,但是当显示对话框时,没有显示文档,这是我的代码:

<h:body>  <ui:composition template="/template/plantilla.xhtml">  <ui:define name="content">
      <h:form id="frmpdf">
          <div align="center"><h:outputText value="Docs .PDF" style="font-weight: bold;"/>
           </div>   <p:dataTable id="dtdpdf" 
                       var="dpdf" 
                     value="#{documentosPdfBean.listdocpdf}" >

              <p:column headerText="Descrip" style="width: 90%;">
                  <h:outputText value="#{dpdf.sgTfd_descripcion}" />
              </p:column>
              <p:column headerText="Open">   
                 <p:commandButton value="open" 
                                  oncomplete="PF('dlg3').show();" 
                                  update="frmpdf:dlgpdf" /> 
              </p:column>
           </p:dataTable>  <p:dialog id="dlgpdf" header="document" widgetVar="dlg3"              showEffect="explode" height="100" dynamic="true">
               <p:media value="/resources/document/manual.pdf" width="100%" height="300px"/>  
                    </p:dialog>                          
                </h:form>
            </ui:define>
        </ui:composition>            
    </h:body> 

我也用过:

<p:commandLink title="manual" onclick="PF('dlg3').show()"  />

result

以上开发就是考虑到这个post

经过更多研究后,我设法用标签解决了我的问题 允许在触发此事件时从 bean 建立一个值,我将代码与解决方案一起保留:

<f:view>

<h:head>
    <title>Page</title>
    <script type="text/javascript" src="/js/keyboard.js" charset="UTF-8"></script>    
    <link rel="stylesheet" type="/text/css" href="/js/keyboard.css" />
</h:head>       

<h:body>  
    <ui:composition template="/template/plantilla.xhtml">
        <ui:define name="content">
            <h:form id="frmpdf">
                <f:event listener="#{documentPdfBean.onPrerender}" type="preRenderView" />
                <div align="center">
                    <h:outputText value="Docs. PDF" style="font-weight: bold;"  />
                </div>   
                <p:dataTable id="dtdpdf" var="dpdf" value="#{documentPdfBean.listdocpdf}" >
                    <p:column headerText="Descrip" style="width: 90%;">
                        <h:outputText value="#{dpdf.sgTfd_descripcion}" />
                    </p:column>
                    <p:column headerText="open">   
                        <p:commandLink styleClass="fa fa-file-pdf-o" onclick="PF('dlgpdf').show()" 
                                       update="frmpdf:pdfvisualizer" style="width: 10px; font-size: 20px; margin-left: 24%;">
                            <f:setPropertyActionListener target="#{documentPdfBean.ruta}" value="#{dpdf.sgTfd_valor}" />
                        </p:commandLink>
                    </p:column>                            
                </p:dataTable>                                                                
                <p:dialog widgetVar="dlgpdf" height="700" width="750" header="pdf" maximizable="true" minimizable="true" 
                          resizable="false" dynamic="true" showEffect="clip"> 
                    <pe:documentViewer height="700" id="pdfvisualizer"  value="#{documentPdfBean.ruta}" />
                </p:dialog>
            </h:form>
        </ui:define>
    </ui:composition>            
</h:body> </f:view>

豆子

 private String ruta;

public String getRuta() {
    return ruta;
}

public void setRuta(String ruta) {
    this.ruta = ruta;
}