簡體   English   中英

重定向到Spring MVC控制器而無需打開頁面

[英]redirect to spring mvc controller without opening a page

我正在嘗試將一些數據發送回我的應用程序,而無需離開現有頁面。 我寧願不重新加載當前頁面。

該應用程序已經具有下載選項,該選項可以按照我希望的方式工作...該按鈕的工作方式如下

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

這轉到下載csv文件的端點,並保留當前頁面。

控制器具有void返回參數

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");
}

當我嘗試使用其他控制器為自己的目的執行此操作時,如果不編輯響應標題,則會得到空白頁

這是我在jsp中的按鈕(幾乎是一個副本)

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

傳遞給此控制器

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

在將控件發送到“測試”控制器的范圍內,此方法起作用,但瀏覽器顯示空白屏幕,而不是將當前頁面留在瀏覽器中。

有沒有一種方法可以將響應標頭編輯為不去任何地方或不執行任何操作,以便執行我的應用程序代碼並將瀏覽器留在調用頁面上而無需以任何方式刷新它?

你的問題是

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
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM