我知道在这里可以找到很多类似的问题,但是没有一个可以帮助我解决我的问题。
客户需要什么:单击一个按钮,然后打开一个具有给定参数的新窗口,并显示一个从数据库中加载动态数据的视图。
到目前为止,我所做的是: 我有一个包含链接而不是按钮的视图:
<a th:href="@{/report/reportPrintView(al=false, mlVersion=${report.version}, sv=true, id=${report.orderId})}" target="_blank">Protokoll</a>
<a th:href="@{/report/reportPrintView(al=true, mlVersion=${report.version}, sv=false, id=${report.orderId})}" target="_blank">Airline</a>
和一个由GET请求调用的控制器:
@GetMapping("/report/reportPrintView")
public String showReportPrint(@RequestParam("al") boolean al, @RequestParam("mlVersion") String mlVersion, @RequestParam("sv") boolean sv, @RequestParam("id") String id, Model model) {
........ do some magic .......
return "/report/reportPrintView";
}
该视图显示在新的浏览器选项卡中,并且可以按预期工作,但是如前所述,客户端需要一个新窗口。
要为客户提供解决方案,我想尝试以下方法:
function openWin(id, mlVersion, al, sv) {
var url = "/report/reportPrintView.html?al=" + al + "&mlVersion=" + mlVersion + "&sv=" + sv + "&id=" + id;
ReportPrintPreview = window.open("about:blank", "ReportPrintPreview", "width=666,height=700left=250,top=50,dependent=yes,menubar=no,status=no,resizable=yes,toolbar=no,scrollbars=yes");
ReportPrintPreview.location.href = url;
ReportPrintPreview.focus();
return false;
}
.
.
.
<button th:onclick="'openWin(\'' + ${report.orderId} + '\', \'' + ${report.version} + '\', false, true)'">Protokoll</button>
<button th:onclick="'openWin(\'' + ${report.orderId} + '\', \'' + ${report.version} + '\', true, false)'">Airline</button>
这里发生的是打开一个新窗口并显示404错误,并且带有按钮的网页显示了400错误。因此,我假设控制器没有收到GET请求并且无法显示视图(这是合理的结果,因为它不是Thymeleaf调用,例如@ {/ report / ....})。 有什么办法可以使它运行?
答案 0 :(得分:1)
这就是我的结构方式。
JavaScript
function openWin(url) {
ReportPrintPreview = window.open("about:blank", "ReportPrintPreview", "width=666,height=700left=250,top=50,dependent=yes,menubar=no,status=no,resizable=yes,toolbar=no,scrollbars=yes");
ReportPrintPreview.location.href = url;
ReportPrintPreview.focus();
return false;
}
胸腺
<button
th:data-url="@{/report/reportPrintView(al=false, mlVersion=${report.version}, sv=true, id=${report.orderId})}"
onclick="openWin(this.getAttribute('data-url'))">Protokoll</button>
<button
th:data-url="@{/report/reportPrintView(al=true, mlVersion=${report.version}, sv=false, id=${report.orderId})}"
onclick="openWin(this.getAttribute('data-url'))">Airline</button>
答案 1 :(得分:0)
对于百里香叶,它以不同的方式起作用。尝试以下。
th:target="_blank"