πλ€λ‘κ°κΈ°
BookForm
package jpabook.jpashop.controller;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class BookForm {
private Long id;
private String name;
private int price;
private int stockQuantity;
private String author;
private String isbn;
}
ItemController
package jpabook.jpashop.controller;
import jpabook.jpashop.domain.item.Book;
import jpabook.jpashop.service.ItemService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
@RequiredArgsConstructor
public class ItemController {
private final ItemService itemService;
@GetMapping("/items/new")
public String createForm(Model model) {
model.addAttribute("form", new BookForm());
return "items/createItemForm";
}
@PostMapping("/items/new")
public String create(BookForm form){
Book book = new Book();
book.setName(form.getName());
book.setPrice(form.getPrice());
book.setStockQuantity(form.getStockQuantity());
book.setAuthor(form.getAuthor());
book.setIsbn(form.getIsbn());
itemService.saveItem(book);
return "redirect/items";
}
}
μν λ±λ‘ λ·°(items/createItemForm.html)
<!DOCTYPE HTML>
<html xmlns:th="<http://www.thymeleaf.org>">
<head th:replace="fragments/header :: header"/>
<body>
<div class="container">
<div th:replace="fragments/bodyHeader :: bodyHeader"/>
<form th:action="@{/items/new}" th:object="${form}" method="post">
<div class="form-group">
<label th:for="name">μνλͺ
</label>
<input type="text" th:field="*{name}" class="form-control"
placeholder="μ΄λ¦μ μ
λ ₯νμΈμ">
</div>
<div class="form-group">
<label th:for="price">κ°κ²©</label>
<input type="number" th:field="*{price}" class="form-control"
placeholder="κ°κ²©μ μ
λ ₯νμΈμ">
</div>
<div class="form-group">
<label th:for="stockQuantity">μλ</label>
<input type="number" th:field="*{stockQuantity}" class="formcontrol" placeholder="μλμ μ
λ ₯νμΈμ">
</div>
<div class="form-group">
<label th:for="author">μ μ</label>
<input type="text" th:field="*{author}" class="form-control"
placeholder="μ μλ₯Ό μ
λ ₯νμΈμ">
</div>
<div class="form-group">
<label th:for="isbn">ISBN</label>
<input type="text" th:field="*{isbn}" class="form-control"
placeholder="ISBNμ μ
λ ₯νμΈμ">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<br/>
<div th:replace="fragments/footer :: footer"/>
</div> <!-- /container -->
</body>
</html>
μν λ±λ‘
- μν λ±λ‘ νΌμμ λ°μ΄ν°λ₯Ό μ
λ ₯νκ³ Submitλ²νΌμ ν΄λ¦νλ©΄ /item/new λ₯Ό POST λ°©μμΌλ‘ μμ²
- μν μ μ₯μ΄ λλλ©΄ μν λͺ©λ‘ νλ©΄(redirect:/items)λ‘ λ¦¬λ€μ΄λ