2

PDFドキュメントを生成して新しいウィンドウで開こうとしています。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

サーバー側で Bean をハッキングするのではなく、プレーンな HTML でそれを行うのはどうですか?

<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>

例と同じコードを使用しますが、違いは、リダイレクトを実行せず、代わりに応答ストリームでPDFドキュメントを直接作成して返すバッキングBeanコードにあります。

于 2012-07-09T18:00:57.457 に答える