gpt4 book ai didi

java - SpringMVC ajax 请求 - java.io.EOFException : No content to map to Object due to end of input

转载 作者:行者123 更新时间:2023-12-02 07:03:04 24 4
gpt4 key购买 nike

我正在开发一个 SpringMVC 应用程序,我使用 ajax 调用从数据库请求一些数据,数据作为 json 对象返回。我现在必须将此数据发送回服务器进行一些处理并返回到表单。

但是我在浏览器中遇到错误服务器遇到内部错误,导致其无法满足此请求。在调查错误日志时我看到了以下内容:

错误日志

Controller [com.crimetrack.web.MapController]
Method [public com.crimetrack.business.Marker com.crimetrack.web.MapController.getNewCoordinates(com.crimetrack.business.Marker) throws java.lang.Exception]

java.io.EOFException: No content to map to Object due to end of input
at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:1324)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1275)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:941)
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readInternal(MappingJacksonHttpMessageConverter.java:124)
at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:153)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:120)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:91)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:71)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)

Ajax 调用

 $('#getCoordinates').on('click',function(){

$.each(global_citizens, function(i, gc){

$.ajax({
type:'GET',
url:'getNewCoordinatesForMarkers.htm',
contentType: 'application/json',
data:{citizens:JSON.stringify(global_citizens[i])},
dataType: 'json',
success:function(new_citizens){
$.each(new_citizens, function(i, c) {

console.log(c.name + ' | ' + c.socialSecurityNumber + ' | ' + c.lat+ ' | ' +c.lng);

});
}
});
});
});

Controller

@RequestMapping(value = "getNewCoordinatesForMarkers.htm", method = {RequestMethod.GET}, headers = {"content-type=application/json"})
public @ResponseBody Marker getNewCoordinates(@RequestBody Marker citizens)throws Exception{

logger.info("Getting Markers");
Marker citizenMarker = this.markerManager.getNextLocation(citizens);

return citizenMarker;

}

Marker.java

public class Marker  implements Serializable{

private int socialSecurityNumber;
private String name;
private int citizenType;
private double lat;
private double lng;

//getters and setters

JSON 数据 - 从 Firebug 控制台获取

citizens{"name":"Jessie Small","lat":10.670044,"lng":-61.515305,"socialSecurityNumber":1999020214,"citizenType":3}

FireBug - 内容正在传递

Connection  close
Content-Length 3696
Content-Type text/html;charset=utf-8
Date Tue, 07 May 2013 05:52:09 GMT
Server Apache-Coyote/1.1
Request Headers
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Type application/json
Cookie tinymcePasteText=1; JSESSIONID=CC4F12D00C836FE0DB86D2493556275C
Host localhost:8084
Referer http://localhost:8084/crimeTrack/crimeTrackMap.htm
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
X-Requested-With XMLHttpRequest

最佳答案

我执行此代码是为了预加载获取所有产品以实现自动完成功能,也许这个示例不完全适合您的代码,但我希望您可以从中得到一些东西:

Controller 功能:

@RequestMapping(value = "allproduct", method = RequestMethod.GET, headers = "Accept=*/*")
public @ResponseBody
String productList() {
List<Product> products = ProductDAO.INSTANCE.listProduct();
String json = "[";
for (int i = 0; i < products.size(); i++) {
Product o = products.get(i);
if (i > 0) {
json += ",";
}
json += "{\"value\":\"" + o.getCode() + "\",\"label\":\""
+ o.getCode() + " - " + o.getProvider() + " - "
+ o.getNominal() + "\",\"price\":\""
+ o.getPrice() + "\",\"cost\":\"" + o.getCost() + "\"}";
}
json += "]";
System.out.println(json);
return json;
}

在我的jsp中,我使用jquery来调用该函数:

$.getJSON('/product/allproduct', function(json) {
$("#product").autocomplete({
source : json,
select : function(event, ui) {
$("#product").val(ui.item.value);
$("#kredit").val(ui.item.cost);
$("#price").val(ui.item.price);
return false;
}
});
});

看看json format here 。数组示例:

[
{
"name": "Jason",
"number": "10"
},
{
"name": "Jimmy",
"number": "11"
}
]

关于java - SpringMVC ajax 请求 - java.io.EOFException : No content to map to Object due to end of input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16409036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com