- 传普通数据没太大问题,就是传json格式的数据在后台转化为javaBean有点问题
需求:前台传json格式的数据,后台用@RequestBody转换为对应的javaBean,
1:首先json里的数据应该对应javaBean里的属性,否则肯定会报错,举个栗子
{\”USER_ID\”:leader,\”Users\”:users};
上面这个格式的数据,在对应的JavaBean里一定要有String USER_ID;String Users;这两个属性,就是包含的关系
- 出现415/400问题的原因是前台传到后台或者后台传到前台的数据格式不正确,格式应该都为application/json(前台接受的都为json,text不讨论)
解决方法:
first:首先保证这里没有配错
springmvc.xml
<!– 启用spring mvc 注解–>
<mvc:annotation-driven>
<!– 启动JSON格式的配置 –>
<mvc:message-converters>
<!– 这里也可以自己定制class –>
<bean class=\”com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter\”>
<property name=\”supportedMediaTypes\”>
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value> //服务器支持json格式的数据,后台传到前台再次设置
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
second:
var saveData ={\”USER_ID\”:leader,\”Users\”:users};
$.ajax({
type : \”POST\”,
url : \”XXXX\”,
data : JSON.stringify(saveData),
contentType : \”application/json\”, //发送至服务器的类型
dataType : \”json\”, //预期服务器返回类型
success : function(data) {
alert(data.msg);
},error:function(data){
alert(data.msg);
}
});
third:
@RequestMapping(value ={ \”/xxx\”}, method = { RequestMethod.POST})
@ResponseBody
public String save(@RequestBody JavaBean类型 aaa) throws Exception {
log.info(\”ajax\”);
int i=xxxService.xxx(aaa);
String massage;
if(i>0){
return \”{\\\”msg\\\”:\\\”success\\\”}\”; //json格式
}else{
return \”{\\\”msg\\\”:\\\”fail\\\”}\”;
}
}
这里还要注意一个问题,就是javaBean 应该要实现序列化, 在分布式项目中,api层实体类和web/service层并没有依赖关系,是通过double来注册管理的,不实现序列化无法进行传输