본문 바로가기

타임리프

타임리프 문법

 

th:text - 텍스트 출력

<div>
	<p th:text="${data}"></p>
</div>

${#strings.substring}(적용할 문자열, 시작범위, 끝 범위) - 어떤 범위까지의 문자열을 추출 

예제) 
// board.writer 데이터에 있는 문자열을 1~2범위만큼 보여준다
// board.writer의 데이터가 홍길동 이라고 가정을 하면 홍(0)길(1)동(2)의 
// 1~2(길)만 출력된다
<p th:text="${#strings.substring(board.writer, 1, 2)}></p>

${#strings.repeat(출력할 글자, 출력할 글자 수)} - 어떤 범위까지 특정 글자를 출력

// * 를 3개 출력
<p th:text="${#strings.repeat('*',3)}"></p>


// ${#strings.substring()}과 합친 예제)
// 이름의 성만 표시되고 나머지는 * 처리 되게 하고 싶다.
<p th:text="${#strings.substring('홍길동',1,2)} + ${#strings.repeat('*',2)}"></p>

// 출력 결과: 홍**

${#strings.length(문자열데이터)} - 글자 길이

// 홍길동의 길이
<p th:text="${#strings.length('홍길동')}"></p> // 출력결과: 3

// user의 phoneNumber의 길이
<p th:text="${#strings.length(user.phoneNumber)}"></p> // 출력결과: 13 (010-0000-0000)

위의 substring, repeat, length 를 합친 응용 예제)

// list.writer => 홍길동
// 홍길동의 0~1 글자범위인 홍만 나오고 - (substring) 
// 홍길동의 글자수 - 1 만큼은 * 이 출력되게 한다.(length, repeat)  
// 홍길동의 글자수 - 1은 3-1 = 2 즉 홍 뒤에 글자는 ** 나오게 처리해
// 홍** 이 된다.

<p 
	th:text="${#strings.substring(list.writer, 0, 1)} + 
    ${#strings.repeat('*', #strings.length(list.writer) - 1)}">
</p>

th:src - 이미지 경로

<img th:src="${data}">

 


th:href - 이동하고자 하는 경로(url)

<a th:href="@{/home/user}"> // 파라미터 없는 경우
<a th:href="@{/home/user?id={id}}"> // 파라미터값이 있는 경우
<a th:href="@{/home/user(id = ${id})}" // 파라미터값이 있는 경우
<a th:href="@{/home/user(id = ${id}, name=${name})}" // 파라미터 값이 여러 개

th:value - 값 지정

<input type="text" th:value=${name}>

th:if, th:unless - 조건문

<a href="/home/adminpage" th:if="${userRole == 'admin'}">관리자 페이지</a> // userRole이 admin인 경우 보인다.

<a href="/home/userpage" th:unless="${userRole == 'guest'}"마이페이지</a> // userRole이 admin이 아닌 경우 보인다.

// th:unless는 th:if문에 들어가는 조건과 동일한 조건을 지정해야함

// th:if 여러개로 처리해도 가능

th:switch, th:case - 조건문 (자바의 switch문이랑 동일)

<th:block th:switch="${userRole}"> 
  <span th:case="1">관리자</span> 
  <span th:case="2">게스트</span> 
</th:block>

th:each - 반복문

<div th:each="list: ${userList}">
	<span th:text="${list.name}"></span>
    <span th:text="${list.country}"></span>
</div>

// 향상된 for문 처럼 th:each="반복해서 나온 값을 담을 객체명: ${컨트롤러에서 넘겨준 데이터명}">

${#numbers.sequence(반복 시작할 수, 반복 종료할 수)}

<!-- 메인 페이징 번호 영역 -->
<th:block th:each="num : ${#numbers.sequence(0, 9)}">
	<p th:text=${num}></p>
</th:block>

// p태그에 0 ~ 9 까지 출력

th:block - 임의의 블록(가상 태그), 조건문, 반복문과 같이 많이 사용됨

<th:block>

</th:block>

조건문 예제) // th:block 안에 조건문이 맞으면 block안에 내용이 출력
<th:block th:if="${user.role == 'admin'}">
	<h3>관리자님 반갑습니다.</h3>
</th:block>

<th:block th:if="${user.role == 'guest'}">
	<h3>고객님 반갑습니다.</h3>
</th:block>

반복문 예제) // th:block 안에 반목문 설정 하면 반복문 안에 내용들이 출력
<th:block th:each="list: ${userList}">
	<div>
    	<span th:text="${list.name}"></span>
        <span th:text="${list.country}"></span>
    </div>
</th:block>

th:onclick - onclick 이벤트 안에 타임리프 값 넣어주기

HTML
// JS 함수([[${변수명}]])
<button th:onclick="checkLike([[${comment.cidx}]])">클릭해주세요.</button>

JS
// JS 는 매개인자로 들어온 값을 꺼내 사용하면됨
function leafBtn(cidx){

	console.log(cidx)
	
}

th:data - data 속성에 타임리프 값 넣어주기(다른 태그에도 다 사용 가능)

<p data-name="${player.name}" data-age="${player.age}" id="player">player 속성</p>

'타임리프' 카테고리의 다른 글

Thymeleaf - layout  (0) 2023.09.12