这个问题非常简单,我知道它在很多其他问题中得到了解答,但没有一个对我有用。使用Spring MVC和AngularJS我得到AngularJS 415不支持的媒体类型!
我尝试将angular header设置为application / json
我尝试在服务器端使用@Consumes
注释
我尝试了consumes ="application/json"
我厌倦了consumes ="application/application/json;charset=UTF-8'
我尝试了consumes ={"application/json","application/xml"}
我也尝试设置生产属性。
我尝试在客户端上明确设置听力内容类型,以便与服务器上的内容完全匹配但是,没有工作!
这里是没有实际帮助的相关问题!
1
2
3
这是我的控制器
/**
* Created by adelin.ghanayem@gmail.com
*/
@Controller
@RequestMapping(value = "/administration/places")
public class PlacesController {
private PlacesService service;
@Autowired
public PlacesController(PlacesService service) {
this.service = service;
}
@RequestMapping(method = RequestMethod.POST,consumes = {"application/json;charset=UTF-8"})
public String newPlace(@RequestBody Place places) {
String id = service.addNewPlace(places);
return "/administration/places/" + id;
}
@RequestMapping(value = "/{id}")
public Place getById(@PathVariable String id) {
return new Place();
}
}
我的AngularJS控制器
function NewPlacesController(scope, http) {
scope.place = {};
scope.add = function () {
http.post(URLS.addNewPlace, scope.place,{'Content-Type': 'application/json'}).success(function (value) {
console.log("got it !");
}).error(function (value) {
console.log("CUR!");
});
}
}
NewPlacesController['$inject'] = ['$scope', '$http'];
答案 0 :(得分:2)
试一试:
@RequestMapping(method = RequestMethod.POST,consumes = {"application/json;charset=UTF-8"}, produces={"application/json;charset=UTF-8"})
public String newPlace(@RequestBody Place places) {
String id = service.addNewPlace(places);
return "/administration/places/" + id;
}
确保你收录了Jackson Databind图书馆。
答案 1 :(得分:1)
查看角度代码中的内容类型。您可能需要明确设置它。另请参阅Spring MVC实现。您可以使用" REST控制台" Chrome中的应用程序来测试你的api以确保它以你认为的方式工作。
答案 2 :(得分:1)
加入你的pom:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>