위의 두 강의는 똑같은 select shop 프로젝트를 다루고 있어서 병행해서 들을 수 있었다.
html과 자바스크립트를 구현하는 부분인데 당장 스프링 공부를 주력하고 싶은 나에게는 집중이 되지 않아서 4주차 완강을 못했다. 내일은 4주차를 꼭 완강해야겠다.
get api는 스프링의 controller를 사용해서 통신이 잘 되었지만 suvlet을 사용한 post api는 통신이 되지 않았다.
튜터님은 잘 되는데 왜 나는 오류가 난 건지,,,? 코드를 복붙만 했는데 오류가 나서 당황했다.
Servlet.service() for servlet
[com.sparta.hardweek01.AllInOneServlet]
in context with path [] threw exception
Java 8 date/time type `java.time.LocalDateTime`
not supported by default: add Module
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
to enable handling (through reference chain:
com.sparta.hardweek01.Product["createdAt"])
위의 에러 메세지를 검색해보니 자바 8 버전에서 LocalDateTime을 지원하지 않아서 생긴 문제였다. JSON 통신 모듈을 설치 할 수 있는 maven repository 에서 jackson-datatype-jsr310 모듈을 받아 build.gradle에 설치하고 LocalDateTime을 이용하는 ObjectMapper 함수에 아래와 같은 모듈 코드를 추가해주면 해결된다고 한다.
ObjectMapper.registerModule(new JavaTimeModule());
그런데 ObjectMapper 라는 함수를 이해하지도 못한채 위의 모듈 코드를 복사해서 썼더니 문제가 해결되지 않았다.
이 에러 때문에 강의를 듣지 못했다. 내일 해결할 수 있으면 좋겠다...
질문방에 2주전에 캠퍼분이 남겨주신 해결책을 보고 해결되었다. 나랑 똑같은 코드로 해결했는데 난 해결 안됐는데 뭐지? 했는데 다름아닌 빵틀이 아니라 빵을 사용해야 한다는 문제였다. 혼자 힘으로 해결하지 못해서 아쉽지만 다음 강의를 들을 수 있어서 다행이다.
// 자바 객체 -> JSON 으로 변환
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule()); //추가
String productJson = objectMapper.writeValueAsString(product);