javascript - 重定向到 spring mvc Controller 而不打开页面

标签 javascript java spring-mvc

我正在尝试将一些数据发送回我的应用程序,而无需离开现有页面。我宁愿不重新加载当前页面。

该应用程序已经有一个下载选项,该选项按照我想要的方式工作...该按钮的工作方式如下

<button type="button" onclick="javascript:window.location='/DownloadEndpoint?params'">Download</button>

这将转到一个端点,该端点下载 csv 文件并按原样保留当前页面。

Controller 有一个空返回参数

RequestMapping(value = "/DownloadEndpoint")
public void csvDownload(HttpServletRequest request, HttpServletResponse response, @ModelAttribute(MODEL_ATTR_NAME) FacetedSearchRequestBean searchRequestBean, @PathVariable(value = PERSON_ID) String personId) throws IOException {

并且 ResponseHeader 被编辑为 csv

protected void setCsvResponseHeaders(HttpServletResponse response, final String cvsSearchType) {
    response.setContentType("text/csv;charset=utf-8");
    response.setHeader("Content-Disposition", "attachment; filename=filename.csv");
}

当我尝试使用不同的 Controller 出于自己的目的执行此操作时,而不编辑响应 header ,我会得到一个空白页面

这是我在 jsp 中的按钮(几乎是一个副本)

<button type="button" onclick="javascript:window.location='${pageContext.request.contextPath}/FeedBack/Test'">Ok</button>

传递到此 Controller

@RequestMapping(value = "/Test")
public void popUpTest(HttpServletRequest request, Model model) throws InterruptedException 
{
    System.out.println("Test");
}

这在控制发送到测试 Controller 的情况下有效,但浏览器不会将当前页面保留在浏览器中,而是显示空屏幕。

有没有办法编辑响应 header ,使其不去任何地方或执行任何操作,以便我可以执行我的应用程序代码并将浏览器保留在调用页面上而不以任何方式刷新它?

最佳答案

你的问题在于

javascript:window.location

因为这会将您的浏览器位置更改为不同的页面。您可以改为进行 ajax 调用。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var response = JSON.parse(xmlhttp.responseText);
        //do something
    }
}
xmlhttp.open("GET", "your url here", true);
xmlhttp.send();

如果你使用 jQuery,那就更容易了。

        $.ajax({
            type: "GET",
            url: "url",
            success: function( response ){
                //do something
            }
        });

关于javascript - 重定向到 spring mvc Controller 而不打开页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957108/

相关文章:

java - 绑定(bind)形式-freemarker + Spring MVC

javascript - javascript 的求值顺序

javascript - 用自定义图像替换 fabric.js 调整大小和旋转控件?

javascript - javascript中只有一个url验证的正则表达式

java - C# 相当于 Java Class.this

java - 如何从字符串值中获取 ENUM - JAVA

javascript - 如何将新数组添加到本地存储中的当前数组元素?

java - 为什么这不会通知线程?

java - 有没有办法在 spring mvc3 的 xml 中设置 if/else 条件?

java - 推土机映射不适用于嵌套对象