교재를 따라 블로그 CRUD 서비스와 컨트롤러 등, 필요한 기능들을 만들었다.
템플릿은 thymeleaf를 사용한다. 과거 프로젝트는 intelliJ에서 지원하는 mustache를 사용했었는데, 스프링부트에서 thymeleaf를 권장해 사용해보기로 했다.
⬇ 아래는 실습을 진행한 깃헙 링크다.
https://github.com/Kimhy-git/springboot-learn.git

ajax와 jquery를 동시에 쓰는 간편함에 빠져있다가 fetch와 axios를 알게 되었다. 책 학습을 끝내고 개인 프로젝트를 진행하면서 어떤 방식을 쓸지 고민된다.
(추가 : vanilla js와 axios를 쓸 예정이다.)
글 생성/수정 뷰를 작성하던 중 오류가 생겼다.
화면상 같은 레이아웃을 공유하고 있어, 글 등록/수정 버튼을 다음과 같이 thymeleaf의 if문법을 이용해 작성 중이었다.
<button th:if="${article.id} != null" type="button" id="modify-btn" class="btn btn-primary btn-sm">수정</button>
<button th:if="${article.id} == null" type="button" id="create-btn" class="btn btn-primary btn-sm">등록</button>
그런데 글 생성 뷰에서 계속 수정 버튼이 나오고 있었다. 확인해보니 article.id가 null이 아닌 0으로 받아지는 것이다.
null을 0으로 수정하여 작동은 올바르게 되었지만, 찝찝함이 남아 있다.
테스트 코드를 작성해본 결과 기본생성자를 호출할 때부터 0으로 생성되는듯 했다.
생각해보면 long 자료형 변수라 0이 할당되어도 이상하지 않다. 교재에서 안내한 null 코드는 어떻게 작동된걸까?