在使用ajax的时候使用到了RequestBody发现了一个容易错的知识点,RequestBody只能把给一个对象封装数据,如果不是一个对象的话,只能得到请求体,如
客户端:
<button id="btn">如你所见,这是一个按钮</button>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
$.ajax({
url:"ajaxTest.spring",
contentType:"application/json;charset=UTF-8",
data:'{"name":"小明","note":"小明是一个人"}',
dataType:"json",
type:"post",
success:function(data,status){
alert("成功");
}
});
});
});
服务端
1.
@RequestMapping("/ajaxTest")
public @ResponseBody void ajaxTest(@RequestBody String name) {
System.out.println(name);
}
@RequestMapping("/ajaxTest")
public @ResponseBody void ajaxTest(@RequestBody Product product) {
System.out.println(product.getName());
}
结果:
1.{“name”:“小明”,“note”:“小明是一个人”} //可以看出@RequestBody没有吧客户端name的数据封装给服务端name
2.小明 //@RequestBody把name封装给了product中name字段
还有要说的就是要想@RequestBody帮你把json数据封装为对象的倒入相应的包,在配置文件里加上mvc:annotation-driven/ 的配置,另外在方法前面加上@ResponseBody可以帮你把对象转换成json数据