生成PDF文档并使用java bean在新窗口中打开它

时间:2012-07-06 16:15:38

标签: jsf javabeans

我正在尝试生成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?

2 个答案:

答案 0 :(得分:0)

你用普通的HTML做什么呢,而不是用服务器端的bean做黑客?

<a href="/app/report.pdf?type=sb" target="_blank" />#{msgs['button.view']}</a>

答案 1 :(得分:0)

请参阅this example

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

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