2

我正在尝试生成 PDF 文档并在新窗口中打开它。我创建了一个 Servlet 来创建 PDF,在我的支持 bean 中我有以下代码:

public void viewReport(){
        try {
            FacesContext.getCurrentInstance()
               .getExternalContext().redirect("/app/report.pdf?type=sb");
            return;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

在我的页面中,我有这个:

<h:form target="_blank">
<h:commandButton action="#{clientBean.viewReport}" value="#{msgs['button.view']}"/>
</h:form>

PDF 没问题,但它在同一个窗口中打开。如何从 bean 在新窗口中打开 PDF?

4

2 回答 2

1

你用纯 HTML 来做,而不是在服务器端用 bean 做黑客呢?

<a href="/app/report.pdf?type=sb" target="_blank" />#{msgs['button.view']}</a>
于 2012-07-06T17:04:02.460 回答
0

这个例子

<h:form target="_blank">
    <h:commandButton value="Download PDF" action="#{myBean.downloadPDF}" />
</h:form>

它使用与您的示例相同的代码,不同之处在于支持 bean 代码不执行重定向,而是直接在响应流中创建并返回 PDF 文档。

于 2012-07-09T18:00:57.457 回答