如何通过servlet在新窗口/选项卡中打开响应?

时间:2018-08-06 10:25:26

标签: java servlets

我过去在HTML页面中有两种形式,每种形式都有一个提交它的按钮。第二个看起来像这样,并生成PDF:

<form action="/MyProject/print" method="post" name="printForm"
    onsubmit="return validateForm()" target="_blank">
    <input type="submit" id="pdf_button" class="button"
        name="print" value="${buttonPrint}"> 
</form>

对于页面流,我需要将两个按钮以一种形式放置并在servlet中处理。我想知道如何在新窗口中提供PDFis吗?

我使用以下方法起作用,但是在同一窗口中转发到PDF。如何将目标设置为_blank

    request.getRequestDispatcher("/print").forward(request, response);

1 个答案:

答案 0 :(得分:0)

如果有人提出相同的问题,这就是我的解决方法:

我通过JavaScript向表单添加了一个onsubmit事件,该事件捕获了按下的提交按钮,并且如果是pdf按钮,则更改了目标和操作。

$("form").submit(
                function() {
                    var val = $("input[type=submit][clicked=true]").attr(
                            'id');
                    if (val == 'pdf_button') {
                        $("#myForm").attr('target', '_blank');
                        $("#myForm").attr(
                                'action',
                                /Path/To/Print/Servlet
                    }
                });
        $("form input[type=submit]").click(
                function() {
                    $("input[type=submit]", $(this).parents("form"))
                            .removeAttr("clicked");
                    $(this).attr("clicked", "true");
                });