遇到的问题:
jQuery cookies 无法写入
原因:
直接打开了html文件导致cookie无效,浏览器会忽略无效cookie
解决:
在服务器运行项目,在写入cookie
遇到的问题:
SpringMvc无法解析前端传来的Json对象
原因:
SpringMvc无法解析复杂Json对象
解决:
在RequestMapping的发方法参数前加上@RequestBody
出现的新问题:
HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-url’
原因:
@ReauestBody需要’application/json’
解决:
前端改为$.ajax({}),设置contentType:’application/json’
或者在@RequestMapping中添加consmues=’application/json’(不过似乎无效)
出现的新问题:
Unrecognized token ‘userClientInfo’: was expecting (‘true’, ‘false’ or ‘null’)
原因:
json格式有误
解决:
使用JSON.stringify()进行转化
总结:
SpringMvc解析前端传来的复杂Json数据.
例如:
需要被转换的类:
public class RequestData<T> {
private UserClientInfo userClientInfo;
private T data;
//省略get set
}
RequestMapping方法:
@RequestMapping(value = "/list")
@ResponseBody
public String list(@RequestBody RequestData<Map> requestData){
System.out.println(JSONObject.fromObject(requestData));
return "{"status":"ok"}";
}
@RequestBody的目的是为了解析Json.
需要在前端ajax中指定contentType=’application/json’
var reqData = {};
var usic = common.setUserClientInfoToCookie();
reqData.userClientInfo = usic;
reqData.data = {};
reqData.data.userId = 10000;
$.ajax({
url:'xxx',
type:'post',
contentType:'application/json',
dataType:'json',
data:JSON.stringify(reqData),//注意这里要用JSON.stringify()包一下
success:function(data) {
alert(JSON.stringify(data));
}
})