![](/img/trans.png)
[英]How to correctly handle this AJAX request that send an array to a Spring MVC controller method? Why it can't work?
[英]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.