簡體   English   中英

如何使用Spring MVC正確處理AJAX請求? 為什么這個示例不能在我的項目中工作?

[英]How correctly handle an AJAX request using Spring MVC? Why this example can't work in my project?

我在Spring MVC和AJAX中還很陌生,但存在以下問題。

進入頁面后,我的應用程序執行此JavaScript函數,該函數執行AJAX GET請求:

function caricaDettaglioRegione(regioneSelezionata) {
    var codiceRegione = regioneSelezionata.getAttribute("data-reveal-id");
    var nomeRegione = regioneSelezionata.getAttribute("data-nome-regione");

    alert("codiceRegione: " + codiceRegione + " - nomeRegione: " + nomeRegione);

    $.ajax({
           type: "GET",
           data: {'codiceRegione' : codiceRegione
                 },
           url: "riepilogoDettaglioRegione",
           contentType:"application/json"

        }).done(function(response) {
            alert("DONE");

        }).error(function(xhr) {
            alert("ERROR");
            manageError(xhr);
        });
}

如您所見,在Http GET請求中,以下行將codiceRegione的值作為請求參數傳遞(稱為codiceRegione ):

           data: {'codiceRegione' : codiceRegione
                 },

所以現在我想處理這個AJAX請求,並將這個controll方法實現到@Controller類中:

@RequestMapping(value = "/riepilogoDettaglioRegione", method = RequestMethod.GET)
public String riepilogoDettaglioRegione(@RequestParam("codiceRegione") String codiceRegione, Model model) {
    System.out.println("INTO riepilogoDettaglioRegione()");

    return "blabla";
}

如您所見,它處理對先前資源( / riepilogoDettaglioRegione )的GET requesto,我嘗試通過@RequestParam(“ codiceRegione”)檢索codiceRegione請求參數。

但是它不起作用,並且在執行上一個AJAX請求時不會執行此方法。

為什么? 我想念什么? 我該如何解決這個問題?

特納克斯

您是在明確地說codiceRegione是參數而不是請求正文。

因此,您需要像這樣更改ajax調用:

 $.ajax({
       type: "GET",
       url: "riepilogoDettaglioRegione?codiceRegione=blah",
       contentType:"application/json"

    }).done(function(response) {
        alert("DONE");

    }).error(function(xhr) {
        alert("ERROR");
        manageError(xhr);
    });

或將codiceRegione包裝在一個對象中,然后為@RequestBody更改注釋@RequestParam。

希望能幫助到你。

由我自己解決。 問題是該項目使用的是Spring Security,並且未登錄的用戶也必須可以訪問此資源,因此我必須插入類似的內容

<intercept-url pattern="/riepilogoDettaglioRegione" access="permitAll" />

進入authernticationManager配置進入spring-security.xml文件。

暫無
暫無

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

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