[SPRING] SpringMVC ajax 요청 - java.io.EOFException : 입력 끝으로 인해 Object에 매핑 할 내용이 없습니다.
SPRINGSpringMVC ajax 요청 - java.io.EOFException : 입력 끝으로 인해 Object에 매핑 할 내용이 없습니다.
SpringMVC 응용 프로그램에서 일하고 있는데, json 객체로 돌아온 ajax 호출을 사용하여 데이터베이스의 일부 데이터를 요청했습니다. 이제이 데이터를 일부 처리를 위해 서버로 다시 보내고 양식으로 리턴해야합니다.
그러나 브라우저에서 오류가 발생합니다. 서버가이 요청을 수행하지 못하게하는 내부 오류가 발생했습니다. 오류 로그 조사에서 나는 이것을 보았다 :
오류 기록
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)
아약스 콜
$('#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);
});
}
});
});
});
제어 장치
@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 데이터
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
해결법
-
==============================
1.이 코드는 자동 완성 기능을 위해 allproduct를 가져 오기 위해 사전로드 한 것입니다.이 예제는 코드에 완전히 들어 맞지 않지만 다음과 같이 얻을 수 있기를 바랍니다.
이 코드는 자동 완성 기능을 위해 allproduct를 가져 오기 위해 사전로드 한 것입니다.이 예제는 코드에 완전히 들어 맞지 않지만 다음과 같이 얻을 수 있기를 바랍니다.
컨트롤러 기능 :
@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 형식을 찾아보십시오. 배열 예제 :
[ { "name": "Jason", "number": "10" }, { "name": "Jimmy", "number": "11" } ]
-
==============================
2.이것은 나를 위해 일한 컨트롤러에 대한 변화입니다.
이것은 나를 위해 일한 컨트롤러에 대한 변화입니다.
@RequestMapping(value = "getNewCoordinatesForMarkers.htm", method = {RequestMethod.POST},produces = "application/json; charset=utf-8") public @ResponseBody Marker getNewCoordinates(@RequestBody Marker json)throws Exception{ JSONObject jsonObj = JSONObject.fromObject(json); ObjectMapper mapper = new ObjectMapper(); Marker citizen = mapper.readValue(jsonObj.toString(), new TypeReference<Marker>(){}); logger.info("Getting Markers"); Marker citizenMarker = this.markerManager.getNextLocation(citizen); return citizenMarker; }
-
==============================
3.헤더에 "Content-Length"를 포함시키지 않으면 오류가 발생합니다.
헤더에 "Content-Length"를 포함시키지 않으면 오류가 발생합니다.
from https://stackoverflow.com/questions/16409036/springmvc-ajax-request-java-io-eofexception-no-content-to-map-to-object-due-t by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 통합 jsf, 봄, 최대 절전 모드. 스프링 빈을 JSF 관리 빈에 삽입하는 방법은 무엇입니까? (0) | 2019.02.22 |
---|---|
[SPRING] ExtJS 6 + 스프링 부트 스택 (0) | 2019.02.22 |
[SPRING] 구성 파일에서 동적으로 값을 전달하는 방법 (0) | 2019.02.22 |
[SPRING] 카메라를 통해 사진 찍고 bytearray의 서버로 전송 (0) | 2019.02.22 |
[SPRING] Oracle을 사용하여 Hibernate에서 마지막으로 삽입 된 행의 ID를 검색 할 수 없습니다. (0) | 2019.02.22 |