인프런 영한님의 스프링mvc2편을 보고 정리한 글입니다.
무엇을 배웠나요?
- 지금부터 타임리프가 제공하는 입력 폼 기능을 적용해서 기존 프로젝트의 폼 코드를 타임리프가 지원하는 기능을 사용해서 효율적으로 개선
- th:object : 커맨드 객체를 지정한다.
- *{…} : 선택 변수 식이라고 한다. th:object 에서 선택한 객체에 접근한다.
- th:field : HTML태그의 id, name, value 속성을 자동으로 처리 해준다.
- th:field렌더링 전
- <input type="text" th:field="*{itemName}" />
- th:field렌더링 후
- <input type="text" id="itemName" name="itemName" th:value="*{itemName}" />
- th:object 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다.
- model.addAttribute("item", new Item());
- th:object="${item}": <form> 에서 사용할 객체를 지정한다. 선택 변수식(*{…})을 적용할수도 있다.
- th:field="*{itemName}”
- {itemName}는 선택 변수 식을 사용했는데, ${item.itemName} 과 같다. 앞서 th:object 로 item 을 선택했기 때문에 선택 변수 식을 적용할 수 있다.
- th:field 는id , name ,value 속성을 모두 자동으로 만들어준다.
- id : th:field 에서 지정한 변수 이름과 같다. id="itemName"
- name: th:field 에서 지정한 변수 이름과 같다. name="itemName"
- value: th:field 에서 지정한 변수의 값을 사용한다. value=""
궁금한 점은 무엇인가요?
궁금한 점은 무엇인가요?
- HTML태그의 id, name, value는 무엇인가
- id 속성은 고유한 식별을 목적으로 하며, name 속성은 form컨트롤 요소의 값을(value)를 서버로 전송하기 위해 필요한 속성입니다. 참고
- HTML에서 button태그의 onclick은 무엇인가
- 링크주소를 나타 낼때 onclick을 사용한다. 참고
- placeholder는 무슨 역할을 하는가위의 이미지와 같은 역할을 한다.
더 필요하다고 생각한 것이 있나요?
- 프론트엔드의 지식이 부족하다.
코드
<form action="item.html" th:action th:object="${item}" method="post">
<div>
<label for="itemName">상품명</label>
<input type="text" th:field="*{itemName}"class="form-control" placeholder="이름을 입력하세요">
</div>
<div>
<label for="price">가격</label>
<input type="text" th:field="*{price}" class="form-control" placeholder="가격을 입력하세요">
</div>
<div>
<label for="quantity">수량</label>
<input type="text" th:field="*{quantity}" class="form-control" placeholder="수량을 입력하세요">
</div>
<hr class="my-4">
<div class="row">
<div class="col">
<button class="w-100 btn btn-primary btn-lg" type="submit">상품 등록</button>
</div>
<div class="col">
<button class="w-100 btn btn-secondary btn-lg"
onclick="location.href='items.html'"
th:onclick="|location.href='@{/form/items}'|"
type="button">취소</button>
</div>
</div>
</form>
'Spring' 카테고리의 다른 글
타임리프 - 스프링 통합과 폼 : 체크박스, 라디오버튼, 셀렉트 박스 (0) | 2022.08.24 |
---|---|
타임리프 기타 문법 (0) | 2022.08.24 |
타임리프 - 스프링 통합과 폼 : 타임리프 스프링 통합 (0) | 2022.08.24 |
스프링mvc2편 타임리프 - 기본기능 : 템플릿 레이아웃2 (0) | 2022.08.10 |
@RequestMapping(””) vs @RequestMapping(”/”) (0) | 2022.08.10 |