Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Redis
- javascript type
- webstorm
- Spring
- javascript 값
- javascript value
- webpack
- javascript native
- java
- 이펙티브 자바
- JetBrains
- CAS
- Spring Session
- 자바
- effectivejava
- spring batch #스프링 배치 #스프링 배치 중복 실행
- javascript
- Intellij
- Effective Java
- 자바스크립트
- nodeJS
- requestbody
- spring security
- ECMA2015
- 이펙티브자바
- java.util.LinkedHashMap cannot be cast
- javascript 기초
- Babel
- ES6
- you don't know js
Archives
- Today
- Total
귀찮지만 만들어보자
Spring 3.1 @RequestBody 유의점 본문
레거시 프로젝트를 다루는 일이 많아지면서 전에 직면하지 못했던 문제들을 해결해야할 경우가 종종 생기게 됐다
당연하게 사용해왔던 @RequestBody 역시나 마찬가지 -_-..
Spring 3.0 -> 3.1로 버전이 올라가면서 deprecated 됐던 설정들을 교체해주고나서 제대로 동작하는가 했더니
이번에는 Object가 아닌 List형태를 RequestBody 어노테이션으로 받아오면
java.util.LinkedHashMap cannot be cast to object
이런식으로 에러가 발생했는데..
나는 분명히 List형태의 데이터를 받아왔지만 LinkedHashMap으로 되어있어서 이상하다는 생각에 구글링을 해보니
일단 4.0이후의 버전에서는 고쳐진 문제라고 한다..
그러나 3.x 버전의 스프링에서 이 문제를 해결하려면
jackson 을 사용할경우
@RequestMapping(value = "/ajax/admin/documentTypeList.do", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity changeDocumentStatus(@RequestBody List<DocumentTypeVO> list) {
ObjectMapper mapper = new ObjectMapper();
List<DocumentTypeVO> al = mapper.convertValue(list, new TypeReference<List<DocumentTypeVO>>() {});
String res = masterService.documentUseYNChange(al);
if ("success".equals(res)) {
return new ResponseEntity(res, HttpStatus.OK);
} else {
return new ResponseEntity(res, HttpStatus.BAD_REQUEST);
}
}
이런식으로 한번 컨버팅해줘야 한다 -_-..