타임리프 활용

2023. 6. 26. 18:00·Spring
728x90

th:object - 커맨드 객체를 지정한다.

*{...} - 선택 변수 식이라고 한다. th:object에서 선택한 객체에 접근한다.

th:field - HTML 태그의 id, name, value속성을 자동으로 처리해준다.

 

렌더링 전

<input type = "text" th:field="*{itemName}"/>

렌더링 후

<input type="text" id="itemName" name="itemName" th:value="*{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>
	<div>
		<label for="price">가격</label>
		<input type="text" id="price" th:field="*{price}" class="form-control" placeholder="가격을 입력하세요">
	</div>
	<div>
		<label for="quantity">수량</label>
		<input type="text" id="quantity" th:field="*{quantity}" class="form-control" placeholder="수량을 입력하세요"> 
   	</div>

 

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=""

id 속성을 제거해도 th:field가 자동으로 만들어준다.

 

렌더링 전

<input type="text" id="itemName" th:field="*{itemName}" class="form-control" placeholde="이름을 입력하세요">

렌더링 후

<input type="text" id="itemName" class="form-control" placeholder="이름을 입력하세요" name="itemName" value="">

 

 

수정 폼

@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model){
	Item item = itemRepository.findById(itemId);
    model.addAttribute("item",item);
    return "form/editForm";
}

 

 <form action="item.html" th:action th:object="${item}" method="post">
      	<div>
		<label for="id">상품 ID</label>
          	<input type="text" id="id" th:field="*{id}" class="form-control"readonly>
	  </div> 
      <div>
			<label for="itemName">상품명</label>
          	<input type="text" id="itemName" th:field="*{itemName}" class="form-control">
	  </div> 
	  <div>
 			<label for="price">가격</label>
          	<input type="text" id="price" th:field="*{price}" class="form-control">
      </div>
	  <div>
			<label for="quantity">수량</label>
          	<input type="text" id="quantity" th:field="*{quantity}" class="form-control">
	  </div>

id, name, value를 모두 신경써야 했는데, 많은 부분이 th:field덕분에 자동으로 처리되는 것을 확인할 수 있다.

 

렌더링 전

<input type="text" id="itemName" th:field="*{itemName}" class="form-contorl">

렌더링 후

<input type="text" id="itemName" class="form-control" name="itemName" value="itemA">

 

 

 

728x90

'Spring' 카테고리의 다른 글

타임리프 라디오 버튼  (0) 2023.06.28
타임리프 멀티 체크박스  (0) 2023.06.27
타임리프 주석사용법  (1) 2023.06.21
HTTP 에 대하여  (0) 2023.02.17
수정 및 DB연결 관련 오류해결  (0) 2022.11.07
'Spring' 카테고리의 다른 글
  • 타임리프 라디오 버튼
  • 타임리프 멀티 체크박스
  • 타임리프 주석사용법
  • HTTP 에 대하여
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    누적합
    타임리프
    BFS
    DFS
    어렵다
    그래프 순회
    자바
    Spring
    백준
    뛰슈
    나는 감자
    JPA
    절개와지조
    티스토리챌린지
    회고록
    모각코
    감자
    오블완
    8기
    프리코스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
타임리프 활용
상단으로

티스토리툴바