티스토리 뷰

반응형

너무 쉬운건 제외하고, 알면 편한 기본적인 타임리프 문법을 정리한다.

 

# th:if (조건문)

<div th:if="${loginResult}==false" class="alert alert-danger d-flex align-items-center" role="alert">
    <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
    비밀번호가 틀립니다.
</div>

조건문이 참일경우만 해당 태그가 작동한다.

 

# th:each (반복문)

<tbody>
    <tr th:each="e: ${eList}">
        <td th:text="${e.id}"></td>
        <td th:text="${e.name}"></td>
        <td th:text="${e.phone}"></td>
        <td th:text="${e.travelType}"></td>
        <td th:text="${e.departDate}"></td>
        <td th:text="${e.arrivalDate}"></td>
        <td th:text="${e.departPlace}"></td>
        <td th:text="${e.arrivalPlace}"></td>
        <td th:text="${e.vehicleType}"></td>
        <td th:text="${e.createdDate}"></td>
    </tr>
</tbody>

eList는 model로 내려진 iterable한 객체이다.

 

# th:href, @{}

<a th:href="@{/admin/main(page=0)}"></a>
<a th:href="@{/admin/main(page=${start - maxPage})}"></a>

링크식에 쿼리 파라미터는 이렇게 넣으면 된다.

 

# th:with (지역 변수 선언)

<ul class="pagination" th:with="start=${(eList.number/maxPage)*maxPage + 1}, end=(${(eList.totalPages == 0) ? 1 : (start + (maxPage - 1) < eList.totalPages ? start + (maxPage - 1) : eList.totalPages)})">

 

# input form에서 POST로 넘긴 데이터 받는법 (하나)

  • method="POST"로 무조건 대문자로 해준다
  • 넘길 데이터의 이름은 name="식별자" 로 넘긴다
  • 컨트롤러에서는 @RequestParam("식별자") 로 받는다

 

# input form에서 POST로 넘긴 데이터 받는법 (여러개=객체)

  • th:object="${넘길 객체 이름}" 으로 form 태그 내부에 데이터를 담아서 넘길 DTO 객체를 명시한다. (이때, 해당 HTML을 렌더링할때 model로 해당 DTO 껍데기를 내려줘야함)
  • th:field="*{매핑할 멤버변수}" 로 각 데이터들을 매핑해준다.
  • 컨트롤러에서는 @ModelAttribute("이름") DTO객체로 받는다.

 

# 서버를 배포할 때는 정적 이미지 src 경로는 반드시 타임리프 문법으로 가져온다.

<img th:src="@{/image/logo.png}">

안 그러면 깨진다.

 
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크