Эта ситуация убивает меня.Запрос JSONP Jjery Ajax JSONP от http://example.com:80 до http://example1.com:8080 никогда не устанавливает тип содержимого, и Spring MVC выдает жалобы на сервер при попытке сериализации моего javabean в параметре контроллера.Если я проверяю запрос JSONP на любом веб-сайте, вызывающем один и тот же домен, он устанавливает тип содержимого.Это проблема порта?Я тестирую сайт Wordpress для Spring MVC API на моем локальном компьютере.
handlerMapperInvoker.java - здесь возникает ошибка в Spring Framework
MediaType contentType = inputMessage.getHeaders().getContentType();
if (contentType == null) {
StringBuilder builder = new StringBuilder(ClassUtils.getShortName(methodParam.getParameterType()));
String paramName = methodParam.getParameterName();
if (paramName != null) {
builder.append(' ');
builder.append(paramName);
}
throw new HttpMediaTypeNotSupportedException(
"Cannot extract parameter (" + builder.toString() + "): no Content-Type found");
}
apicontroller.java - API Side
@RequestMapping(value="/badge/get")
public @ResponseBody IHttpResponse getBadge(@RequestBody GetBadgeRequest request) {
apiService.getBadge(request);
return request.getResponse();
}
api.js - Wordpress
getBadge : function(id) {
var model =
{
id : id
};
this.call({ url: 'badge/get.json', type: 'GET', data: model, callback: function(data)
{
alert(data);
}});
},
call : function(options) {
var def = {
url : '',
type : "POST",
dataType : 'jsonp',
data : undefined,
contentType : "application/json",
callback : function() {},
errorCallback : function() {}
};
$.extend(def, options);
var sessionToken = api.getSession();
if(sessionToken && sessionToken != "undefined") {
if(!def.data) {
def.data = {};
}
def.data.sessionToken = sessionToken;
}
var url = config.baseUrl + def.url;
// Abort Request If Another One Is Made
if (config.request != null)
config.request.abort();
if (def.showLoader) {
application.loader(true);
}
config.request = $
.ajax({
url : url,
type : def.type,
data : { request: $.toJSON(def.data) },
dataType : def.dataType,
contentType : def.contentType,
success : function(data) {
if (def.showLoader) {