1. th:value
- 단순히 HTML 요소의 value 속성에 값을 지정함.
- 데이터 객체와 바인딩되지 않음.
- 주로 입력 필드에 초기값을 설정하거나 서버에서 전달된 데이터를 표시할 때 사용됨.
Ex)
입력 필드에 특정 값을 표시하고 싶을 때 사용
<input type="text" th:value="${user.username}">
↓
↓ 결과
↓
<input type="text" value="홍길동">
- id와 name 속성은 직접 따로 지정해야됨.
2. th:field
- 폼 필드와 백엔드의 모델 객체를 직접적으로 바인딩하여 입력값을 서버로 전송하거나 서버에서 받은 데이터를 폼 필드에 반영함.
- th:field는 폼 객체의 특정 필드와 HTML 요소를 바인딩(Binding)하는 역할.
- 주로 Spring MVC와 함께 사용되고 폼 데이터를 모델 객체의 속성과 자동으로 매핑함.
th:field
는 내부적으로 HTML의 name, id, value 속성을 자동으로 설정
함.
- 폼 데이터를 처리하거나 검증할 때 주로 사용됨.
Ex)
사용자가 입력한 데이터를 서버로 전송하거나, 서버에서 받은 데이터를 폼에 자동으로 채울 때 사용.
<input type="text" th:field="*{username}">
↓
↓ 결과
↓
<input type="text" id="username" name="username" value="홍길동">
- 특히
*{...}
표현을 쓸 때는 th:object
가 있어야 제대로 동작함.
- Why?
th:field="*{username}"
와 같이 *{}
문법을 사용하면
th:object
로 지정한 객체를 기준 루트(root)
로 해서 바인딩할 필드를 찾기 때문.
<form th:object="${user}" method="post">
<input type="text" th:field="*{username}">
</form>
3. 참고.