원래 숙제였는데
숙제하려고 찾아보니 일단 form데이터를 넣을 엔티티를 따로 만들고
레포지토리도 따로만들고
그걸 컨트롤러도 따로 만들고 이런식으로 어찌저찌해서 넣는거였다.
아무래도 저게 정석이긴 한데
근데 코딩애플에서는 그걸 원하는게 아닌 간단한걸 원하는거같아서
내가 만든건 기존item엔티티에 파라미터를 받는 생성자를 만들어주고
그걸 기존 itemController에서 생성한다음 거기에 파라미터 담아주고
기존 ItemRepository.save(생성자)해서 보내주었다. 이렇게 하니 잘됐다.
근데 알고보니 코딩애플에서는 이것보다 더더더더더더 간단한 기초방법을 알려주었다...당황...
다른편에 나오는건가? 아님 이런식으로 진짜 겉만 알려주고 정석같은건 다른강의를 봐야하는걸까..?
어쩌면 내가 어렵게 생각했을수도 있고 ㅋㅋ
내가 한 방법
@Entity
@ToString
@Setter
@Getter
@NoArgsConstructor
public class Item {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private Integer price;
//밑에 추가
public Item(String title,Integer price){
this.title = title;
this.price = price;
}
//itemController에 밑에 추가
Item addItem = new Item(title,price);
itemRepository.save(addItem);
코딩애플에서 알려준 방법
Item item = new Item;
item.setTitle(title);
item.setPrice(price);
itemRepository.save(item);
@ModelAttribute
사용자가 보낸 데이터를 한꺼번에 쉬벡 반환하고싶을때
@ModelAttribute 클래스명 변수명
이렇게 하면 new 클래스() 이것도 알아서 다 해주고 보낸 데이터들을 알아서 다 집어넣어준다.
String addPost(@ModelAttribute Item item) {
itemRepository.save(item);
th:fragment="원하는이름"
타임리프 html 반복문
예를들어 navbar 같은경우 여러 페이지에 똑같이 적용하고싶으면 타임리프 반복문 쓰면 됨
반복해서 넣어주고싶은 코드를 따로 빼서 따로 html파일을 만들고 (참고로 한 파일안에 여러개 생성가능)
반복해주고싶은 코드안에 th:fragment="원하는이름"
<div class="nav" th:fragment="navbar">
<a class="logo">SpringMall</a>
<a href="/list">List</a>
<a href="/write">Write</a>
</div>
그리고 넣어줄 html에 다시가서
th:replace="~{UI가 들어가있는 파일경로::아까작명한거}
이제 계속 원하는곳에 이거 복붙해주면 됨.
tip! 참고로 문법안에 변수전송도 가능
장점 : 코드가 길어지지않고
한번에 수정가능
<div th:replace="~{nav.html::navbar}"></div>
'SPRING' 카테고리의 다른 글
[Spring Boot] 상품상세페이지2 타임리프로 링크만들기 (0) | 2025.03.20 |
---|---|
[Spring Boot] 상품상세페이지1 (0) | 2025.03.18 |
[Spring Boot] 상품추가기능 만들기 MAP (0) | 2025.03.17 |
[Spring Boot] 개발자들이 private를 쓰는이유 (0) | 2025.03.15 |
[Spring Boot] public / package - private / protected / static / private / getter / setter (0) | 2025.03.15 |