我是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";
}
正如你所看到它处理GET请求到之前的资源( / riepilogoDettaglioRegione ),我尝试通过 @RequestParam(&)检索 codiceRegione 请求参数#34; codiceRegione&#34)
但它无法正常工作,并且在执行上一个AJAX请求时不会执行此方法。
为什么呢?我错过了什么?我该如何解决这个问题?
TNX
答案 0 :(得分:1)
你明确地说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。
希望它有所帮助。
答案 1 :(得分:0)
由我自己解决。 问题是该项目使用了Spring Security,并且该资源也必须对未登录的用户也是可访问的,所以我必须插入这样的东西
<intercept-url pattern="/riepilogoDettaglioRegione" access="permitAll" />
将authernticationManager配置导入 spring-security.xml 文件。