📒 [실전! 스프링 부트와 JPA 활용 - 김영한] 프로젝트를 완성한 후 부족한 기능을 개선한 후 정리하는 글입니다.
Book) 유형에 해당하는 상품 유형 1개만 등록이 가능한 상태에서 앨범(Album)과 영화(Movie) 상품 유형을 추가로 등록할 수 있도록 수정한 시도가 있었습니다. 🧷 참고Book) 유형에 해당하는 상품을 등록하기 위한 createBookForm.htmlAlbum) 유형에 해당하는 상품을 등록하기 위한 createAlbumForm.htmlMovie) 유형에 해당하는 상품을 등록하기 위한 createMovieForm.htmlForm 3개를 복사 붙여넣기를 통해 주먹구구식으로 해결했지만, 이것은 분명 좋지 않은 개발 상태임을 개발 호소인으로서 직감하였지만 해결 방법이 떠오르지 않아서 일단 남겨두기로 하였습니다.BootStrap의 Docs에서 컴포넌트를 확인하던 중 아코디언 을 발견하였습니다.

📒 BootStrap Docs의 Accordion을 참고하여 작성하였습니다.
<div class="accordion-body"> 의 CONTENT 부분에 각 상품의 createForm 을 작성하였습니다.<div class="accordion" id="accordionExample">
<div class="accordion-item">
<h2 class="accordion-header" id="headingOne">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
Accordion Item #1
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
<div class="accordion-body">
CONTET
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingTwo">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Accordion Item #2
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
<div class="accordion-body">
CONTET
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingThree">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
Accordion Item #3
</button>
</h2>
<div id="collapseThree" class="accordion-collapse collapse" aria-labelledby="headingThree" data-bs-parent="#accordionExample">
<div class="accordion-body">
CONTET
</div>
</div>
</div>
</div>
createOOOOForm.html 파일을 모두 제거하였습니다.Controller 에서도 각 상품 별로 존재하던 GetMapping 코드 모두 제거하였습니다.GetMapping으로 모든 모든 상품을 등록할 수 있도록 수정하였습니다.@GetMapping("/items/new")
public String createBookForm(Model model){
model.addAttribute("albumForm", new AlbumForm());
model.addAttribute("bookForm", new BookForm());
model.addAttribute("movieForm", new MovieForm());
return "items/createItemForm";
}
model 에 3개의 Form Attribute를 추가하는 이유는 3개의 상품 중 어떤 상품이 등록될지 모르기 때문에 모든 상품의 Form 을 추가하였습니다.SpringBoot 혹은 ThyemeLeaf 로 해결해야 한다는 생각이 무의식 중에 있었던 것 같다.