我正在开发一个项目,该项目将使用Ajax将JSON对象发布到Springs-MVC。我做了很多更改,我得到了更多错误,但我没有看到在我需要的对象中发布到Spring的数据。
这是我的Spring Controller。
@RequestMapping(value="/AddUser.htm",method=RequestMethod.POST)
public @ResponseBody JsonResponse addUser(@ModelAttribute(value="user") User user, BindingResult result ){
JsonResponse res = new JsonResponse();
if(!result.hasErrors()){
res.setStatus("SUCCESS");
res.setResult(userList);
}else{
res.setStatus("FAIL");
res.setResult(result.getAllErrors());
}
return res;
}
我放了一个断点,我的USER对象永远不会得到数据。 next是我的USER对象的副本:
public class User {
private String name = null;
private String education = null;
private List<String> nameList = null;
private List<String> educationList = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
public List<String> getNameList() {
return nameList;
}
public void setNameList(List<String> nameList) {
this.nameList = nameList;
}
public List<String> getEducationList() {
return educationList;
}
public void setEducationList(List<String> educationList) {
this.educationList = educationList;
}
现在对于执行Ajax的javascript代码,JSON帖子:
function doAjaxPost() {
var inData = {};
inData.nameList = ['kurt','johnathan'];
inData.educationList = ['GSM','HardKnocks'];
htmlStr = JSON.stringify(inData);
alert(".ajax:" + htmlStr);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: contexPath + "/AddUser.htm",
data: inData,
dataType: "json",
error: function(data){
alert("fail");
},
success: function(data){
alert("success");
}
});
};
如果可以帮忙,请现在就告诉我?我必须尽快开始工作......谢谢
答案 0 :(得分:3)
您还需要在控制器中找到的RequestMapping注释中指定标题。
@RequestMapping(headers ={"Accept=application/json"}, value="/AddUser.htm", method=RequestMethod.POST)
此外,请删除网址路径中的.htm。 htm是某种请求类型。使用.htm指定要将请求作为经典html请求处理的Web服务器。使用.json将向Web服务器指定请求期望作为json请求处理。