如何使用<h:commandlink>?</h:commandlink>在jsf中打开浏览器窗口

时间:2014-10-28 11:37:21

标签: javascript jsf jsf-2

我有一个PDF创建动作bean,其中生成PDF并返回浏览器..但问题是,它会在新的浏览器选项卡中打开..

我曾提到过: http://balusc.blogspot.in/2006/05/pdf-handling.html

谢谢

在jsf中

 <h:commandLink id="Print"  action="#{Bean.generatePdf}" target="_blank">
                                <h:graphicImage url="../../resources/icons/print.png"/>
  </h:commandLink>

豆 pdf生成代码由balusC提供

1 个答案:

答案 0 :(得分:0)

你应该在你的页面中

<h:commandLink id="Print">
    <h:graphicImage url="../../resources/icons/print.png"/>
    <f:ajax listener="#{Bean.generatePdf}" render="scriptPanel" onevent="eventHandler"/>
</h:commandLink>

<h:panelGroup id="scriptPanel">
    <script>
        function eventHandler(event)
        {
            if (event.status == 'success')
            {
                window.open('#{Bean.pdfUrl}');
            }
        }
    </script>
</h:panelGroup>

在你的bean中你应该:

private String pdfUrl;

public String getPdfUrl()
{
    return pdfUrl;
}

public void generatePdf()
{
    pdfUrl = "/pdfDownload?pdfName=myPdfName"; // set new window url here, and any url parameter you need
}

另外,在你的pdf显示servlet中你应该:

@WebServlet(name = "PdfServlet", urlPatterns = {"/pdfDownload"})  
public class TestServlet extends HttpServlet {  

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        // generate the pdf and send it to response outputstream 
    }  
}