我正在使用Spring MVC,当我执行ajax post调用时,我得到了404。我的控制器如下所示:
@Controller
@RequestMapping("/mensaje")
public class MensajeController {
public MensajeController() {
super();
}
@ResponseBody
@RequestMapping(value = "/prueba", method = RequestMethod.POST)
public String prueba(@RequestParam("cuerpo") final String cuerpo) {
String b = null;
String a = null;
return b;
}
}
然后像这样的ajax调用:
<script type='text/javascript'>
$(document).ready(function() {
$("#save").click(function(e) {
e.preventDefault();
var myEditor = document.querySelector('#editor');
var html = myEditor.children[0].innerHTML;
$.ajax({
type : "POST",
url : "/Gestion-Practicas/mensaje/prueba",
dataType: "json",
contentType: 'application/json; charset=utf-8',
data: {'cuerpo': html},
async: false,
cache: false,
delay: 15,
success: function(data){
alert('success');
},
error: function (xhr) {
alert(xhr.responseText);
}
});
});
});
</script>
我执行ajax调用的网址是:
http://localhost:8080/Gestion-Practicas/mensaje/create.do
进行ajax调用后,出现在Chrome控制台中的网址是:
http://localhost:8080/Gestion-Practicas/mensaje/prueba
总而言之,ajax调用永远不会到达控制器的方法,我也不知道为什么
答案 0 :(得分:3)
使用@RequestParam
代替@RequestBody
@RequestParam
-用于请求网址中的查询参数。
@RequestBody
-这是后主体有效载荷。
将您的String cuerpo
转换为具有属性String cuerpo
的课程
public class PostBody{
private String cuerpo;
public String getCuerpo(){
return this.cuerpo;
}
public void setCuerpo(String cuerpo){
this.cuerpo = cuerpo;
}
}
现在您的行public String prueba(@RequestParam("cuerpo") final String cuerpo)
更新后的外观类似于public String prueba(@RequestBody final PostBody postBody)
。