#스프링 부트와 AWS로 혼자 구현하는 웹서비스
계속 진행해오고 있는 책을 보면서 코딩하기를 하는 중에 이번에는 게시글 목록의 조회 부분에서 문제가 있었다.
원인은 간단했지만 오류코드를 제대로 보지 못한 나는 멍청하게 다른 오류들을 찾아보고 가장 기본적인 부분을 간과하고 있었다.

위의 오류를 보지 못하고 오직 브라우저에 보이는 view만을 가지고 생각한 것이다.

그래서 결과는 지옥의 whitelabel error......
서버를 돌리면 처음에는 welcome page가 잘 나오고 등록 페이지로 넘어가고 심지어 db까지 저장이 되어서 어디가 잘못된 것인가를 파일경로나 버전오류로 생각하고 이를 해결하려고 열심히 찾아보았다.
하지만 아무리 코드의 연결관계를 뒤져보고 분석해도

window.location.href='/' 코드의 오류는 아니었다.
그래서 혹시 다른 방법이 있나해서 책과는 다르게 window.location.repalce();를 사용해보았다.
결과적으로 해결은 못하였다.. href와 repalce의 차이는

구박사님이 알려주셨다. replace는 이전의 위치를 보여주지 않는 함수호출 방식이고,
href는 속성을 바꾸는 방식이다. 즉 지금의 문제와는 전혀 관련없는 해결책이다.
그래서 다시 코드를 분석했고, 데이터가 저장되는 방식을 하나하나 뜯어보기로 했다.
데이터 조회의 원리는 이렇다.
indexcontroller를 조작하여 welcomepage에 model을 넘겨준다. 여기서 사용하는 메소드는 findAllDesc이다.
이 메소드는 서비스 부분에 구현한 메소드로

repository에서 데이터를 가져와서 stream으로 순회하면서 postslistresponsedto로 객체화 한 후 list로 만들어서 반환하는 메소드이다. 여기서 postslistresponsedto는 정의 되어있는 객체가 아니기에 다시 클래스를 생성하여 정의도 해주어야한다.

그리고 중요한건 repository에서 있는 findAllDesc메소드이다.
JPA를 통해서 인터페이스에 정의만 해주면 쿼리를 통해서 데이터를 가져와서 리스트로 반환해준다.

그리고 리스트를 조회하려면 일단은 데이터가 저장되어야 하지 않겠는가
글을 등록하는 페이지를 만들어주어야한다.
또 indexcontroller에 글 등록 페이지를 맵핑해주고 이제는 그 부분을 봐야한다.

위 코드는 글 등록 페이지의 프런트 부분이다. 이 부분은 크게 중요한 것이 없다. 여기서 봐야할 건 버튼 부분과 input부분인데 여기도 js를 연결해줄 id만 잘 보면된다.

글 등록에서 중요한건 js다.

위의 코드는 등록버튼을 누르면 작동하는 js 코드이다. 등록버튼을 누르면 input창에 입력된 값들을 가져와서 json파일로 변환하여 기존에 만들어둔 postapicontroller로 json파일을 보내서 db에 글을 등록한다.
그리고 이 등록된 글이 welcompage인 index.mustache파일에서 보이도록 하는 방식인데 등록을 한 후 welcomepage로 이동을 하려고 하면 에러가 뜨는 것이었다.
결론 적으로는 문제의 원인은 오타였다....

위의 코드는 welcomepage의 프런트부분이다. 여기서 등록한 값을 indexcontroller를 통해서 model을 받아서posts 리스트를 순회하여 아래의 값들을 채우는데 문제는 여기서 modifiedDate를 modifideDate로 입력했던 것이다.
결론은 오타 때문에 뜬 에러였다....그래도 이 에러 덕분에 코를 한번 다시 분석해볼 수 있어서 이해도는 올라갔다.
'Spring' 카테고리의 다른 글
타임리프 활용 (0) | 2023.06.26 |
---|---|
타임리프 주석사용법 (1) | 2023.06.21 |
HTTP 에 대하여 (0) | 2023.02.17 |
수정 및 DB연결 관련 오류해결 (0) | 2022.11.07 |
구글 로그인 연동을 위한 분석과정 (0) | 2022.11.07 |