@GetMapping("/add")
public String addForm() {
return "form/addForm";
}
<form action="item.html" th:actionmethod="post">
<div>
<label for="itemName">상품명</label>
<input type="text"
id="itemName"
name="itemName"
class="form-control"
placeholder="이름을 입력하세요">
</div>
...
</form>
@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("item", new Item());
return "form/addForm";
}
object
속성으로 선언th:field
를 사용하면 id
와 name
, value
를 대신할 수 있음⚠️ lebel 태그의 for 속성은 input 의 id 를 기반으로 묶이게 되는데 코드상으로는 id 가 없기 때문에 붉은색 오류 표시가 나타난다.
<form action="item.html" th:object="${item}" th:actionmethod="post">
<div>
<label for="itemName">상품명</label>
<input type="text"
th:field="${item.itemName}"
class="form-control"
placeholder="이름을 입력하세요">
</div>
...
</form>
⚠️ textarea 일 경우는 value 가 먹지 않는다.
- 이 경우 test 에 value 값을 넣어줘야 작동한다.
item
도 생략 할 수 있다.th:field="${item.itemName}"
→ th:field="*{itemName}"
<input type="text"
th:field="*{itemName}"
class="form-control"
placeholder="이름을 입력하세요">
<form action="" method="post">
<div>
<label for="itemName">상품명</label>
<input type="text" class="form-control" placeholder="이름을 입력하세요" id="itemName" name="itemName" value="">
</div>
<div>
<label for="price">가격</label>
<input type="text" class="form-control" placeholder="가격을 입력하세요" id="price" name="price" value="">
</div>
<div>
<label for="quantity">수량</label>
<input type="text" class="form-control" placeholder="수량을 입력하세요" id="quantity" name="quantity" value="">
</div>
...
</form>
th:value="${item.id}"
<form action="item.html" th:action method="post">
<div>
<label for="id">상품 ID</label>
<input type="text"
id="id"
name="id"
class="form-control"
value="1"
th:value="${item.id}"
readonly>
</div>
...
object
를 선언하고 그 값으로 model 에서 item
을 받아온다.id
, value
, name
을 th:field
로 대체하고 선택변수를 사용해 item
도 생략한다.type
, th:field
, class
속성만 관리해주면 된다.<form action="item.html" th:object="${item}" th:action method="post">
<div>
<label for="id">상품 ID</label>
<input type="text"
th:field="*{id}"
class="form-control"
readonly>
</div>
...