java - 如何通过 servlet 在新窗口/选项卡中打开响应?
问题描述
我曾经在我的 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 中处理它。我想知道如何在新窗口中实现 PDF 服务?
我使用以下确实有效,但在同一窗口中转发到 PDF。我怎么能把目标设定为_blank
?
request.getRequestDispatcher("/print").forward(request, response);
解决方案
如果有人遇到同样的问题,这就是我的解决方法:
我通过 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");
});