title:
date: YYYY-MM-DD HH:MM:SS +09:00
categories: [강의 Spring , 스프링 MVC 2편]
tags:
[
Spring,
spring MVC,
백엔드 웹 개발 활용 기술,
${@myBean.doSomething()}
처럼 스프링 빈 호출 지원th:object
(기능 강화, 폼 커맨드 객체 선택)th:field
, th:errors
, th:errorclass
th:object
: 커맨드 객체를 지정한다.*{...}
: 선택 변수 식이라고 한다. th:object
에서 선택한 객체에 접근한다.th:field
<input type="text" th:field="*{itemName}" />
th:object
를 적용하려면 먼저 해당 오브젝트 정보를 넘겨주어야 한다.@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("item", new Item());
return "form/addForm";
}
<form action="item.html" th:action th:object="${item}" method="post">
<div>
<label for="itemName">상품명</label>
<input type="text" id="itemName" th:field="*{itemName}" class="form-control" placeholder="이름을 입력하세요">
</div>
</form>
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=""
checked="checked"
체크 박스에서 판매 여부를 선택해서 저장하면, 조회시에 checked
속성이 추가된 것을 확인할 수 있다.
이런 부분을 개발자가 직접 처리하려면 상당히 번거롭다. 타임리프의 th:field
를 사용하면, 값이 true
인 경우 체크를 자동으로 처리해준다.