1.首先找是否缺少需要的jar包(jackson相关三个jar包:jackson-annotation.jar,jackson-core.jar,jackson-databind.jar),而本人项目jar包由maven管理,所以排除这种可能。
2.在后台请求方法上的注解中加上consumes = “application/json”,即
@RequestMapping(value = "/book/set/",consumes = "application/json")
这个成功的可能性也不大
3.若是前台使用ajax传值,则设置其中的请求头
contentType: “application/json; charset=utf-8”
4.以上方法不行时(或者前台并不用ajax传值,或数据并不是json格式),把接口API的参数接收格式修改为接收form表单。
把注解@RequestBody 去掉,因为此注解表示接收的参数格式为json
/**
* 获得所有菜单
*/
@RequestMapping(value = "listMenu", method=RequestMethod.POST)
@ResponseBody
public List<MenuInfo> listMenu(@RequestBody MenuQuery menuQuery) {
List<MenuInfo> menuInfos = new ArrayList<>();
if(menuQuery.getAppName() == null && menuQuery.getParentId() == null){
logger.info("获得所有菜单");
menuInfos = menuClientService.getMenu("");
}else{
MenuInfoList list = menuClientService.getMenus(menuQuery);
menuInfos = list.getMenuInfo();
}
return menuInfos;
}
到第四步终于解决了问题,这一步解决方法来自:https://blog.csdn.net/y_h_d/article/details/80118289