我试图将使用ajax的json发布到我的spring mvc控制器中,我在js文件中使用如下代码:
$('#regist').click(function () {
$.ajax({
url: 'user/regist',
contentType: "application/json; charset=utf-8",
type: 'post',
dataType: 'json',
success: function (data) {
var json = JSON.stringify(data);
alert(json);
},
fail: function (errMsg) {
alert(errMsg);
},
data: JSON.stringify({
'IDCard': '1234567890'
})
})
});
我的控制器功能的签名是这样的:
@RequestMapping(value = "/regist", method = RequestMethod.POST)
@ResponseBody
public ResultJson regist(HttpSession session, @RequestBody RegistFormJson json)
RegistFormJson如下所示:
public class RegistFormJson {
private String IDCard;
public String getIDCard() {
return IDCard;
}
public void setiDCard(String IDCard) {
this.IDCard = IDCard;
}
}
现在,当我发送请求时,以及使用
logger.info(json.getIDCard);
为null。当我将bean属性更改为idCard并同时更改其他代码时,也可以成功获得结果。谁能告诉我为什么?而且,如果我想在代码中使用IDCard,如何获得结果。谢谢
最佳答案
Spring附带了Jackson API,该API使用标准Java代码约定将JSON属性映射到Java模型。
由于IDCard
不是小写字母,因此Jackson API无法映射JSON属性。
为了克服这个问题,您需要在Java属性上指定@JsonProperty("IDCard")
批注,以便将IDCard
用于JSON属性。
同样,您可以在PropertyNamingStrategy
上设置ObjectMapper
以解决此问题。