본문 바로가기
CLASS/SPRINGBOOT

#5-1 / thymeleaf로 데이터 출력 1 : text , ArrayList , Map , dao, 조건문 , checked

by hingu 2024. 8. 20.

thumeleaf

html에 출력 가능

jsp,jstl에 출력 가능 ( jsp,jstl 상위 )

spring에서는 잘 안씀

 

✅ 설치

이거 체크 => pom.xml 체크
이게 생겨있음

 

 

application.properties 추가

#thymeleaf

# 템플릿 캐쉬를 비활성 - 소스를 수정시 바로 새로고침이 이루어짐
spring.thymeleaf.cache=false  

# 템플릿 뷰를 이용하여 resources의 디렉토리를 활성화하여 사용함
spring.thymeleaf.check-template-location=true

spring.thymeleaf.enabled=true

# view 경로를 말함
spring.thymeleaf.prefix=classpath:/templates/

# view 파일 속성명
spring.thymeleaf.suffix=.html

# view에서 사용되는 연동 파일 랜더링 코드
spring.thymeleaf.mode=html

 


  👀 Thymeleaf 사용법 1  - text , ArrayList , Map

- controller  - datalist.do와 mapping

//thymeleaf로 데이터 출력
@GetMapping("datalist.do")
public String datalist(Model m) {
    String user="홍길동";
    m.addAttribute("user",user);

    List<String> all = new ArrayList<String>();
    all.add("Java");
    all.add("HTML");
    all.add("Spring-boot");
    m.addAttribute("all",all);

    Map<String, String> member = new HashMap<String, String>();
    member.put("mid", "apink");
    member.put("mname", "에이핑크");
    member.put("memail", "apink@naver.com");
    member.put("mphone", "01012345678");
    m.addAttribute("member",member);

    return null;
}

 

 

- datalist.html

templates 폴더 안에 생성

❗ thymeleaf 사용시 JSP 또는 JSTL 사용  X 

<!DOCTYPE html>
<html lang="ko" xmlns:th="https://www.thymeleaf.org"> 
<head>
<meta charset="UTF-8">
<title>Thymeleaf 사용법 1</title>
</head>
<body>
	[ 테스트페이지 ]
	<p th:text="${user}"></p>
	
	<!-- data(가상변수) : ${all}(배열값) -->
	<ul th:each="data : ${all}">
		<li th:text="${data}"></li>
		<li th:text="${dataStat.index}"></li> <!-- 가상변수명Stat.키배열명 -->
	</ul>
	
	<br>
	
	<!-- 배열 -->
	<ul th:each="data,list : ${all}"> <!-- ul이 돌아감 -->
		<li th:text="${list.index}"></li>
		
		<li th:text="${list}"></li> <!-- key배열 형태로 확인 -->
		
		<li th:text="${list.size}"></li>
	</ul>
	
	<br>
	
	<!-- key 배열(Map) => key, value 속성을 이용하여 출력 -->
	<ol th:each="userinfo:${member}"> <!-- ol이 돌아감 -->
		<li th:text="${userinfo.key}"></li>
		<li th:text="${userinfo.value}"></li>
	</ol>
	
</body>
</html>

xmlns:th="https://www.thymeleaf.org" : thymeleaf 공식사이트 url임

=> thymeleaf를 명시하는 속성값

 

th:text

데이터 출력

 

th:each

배열 출력

 

가상변수명Stat.키배열명

가상변수 X 고정단어임

노드,갯수,데이터 도 가능

 

key 배열(Map)

key, value 속성을 이용하여 출력

 

요렇게 출력

 


  👀 Thymeleaf 사용법 1  - dao, 조건문 , checked 

- userDB_dao.java => DAO

@Getter
@Setter
@Repository("userDB_dao")
public class userDB_dao {
	int uidx;
	String uname,uemail,upass,ujoin;
}

 

- controller

//thymeleaf로 데이터 출력
@GetMapping("datalist.do")
public String datalist(Model m) {
    //dao를 이용하여 thumeleaf로 출력
    userDB_dao da = new userDB_dao();
    da.setUidx(10);
    da.setUname("강감찬");
    da.setUemail("kang@gmail.com");
    m.addAttribute("da",da);

    //이벤트 참여 여부
    String agree="Y";
    m.addAttribute("agree",agree);

    //select 목록
    String chart = "이름";
    m.addAttribute("chart",chart);

    return null;
}

 

- datalist.hml

<!DOCTYPE html>
<html lang="ko" xmlns:th="https://www.thymeleaf.org"> 
<head>
<meta charset="UTF-8">
<title>Thymeleaf 사용법 1</title>
</head>
<body>	
	<!-- dao 값을 이용하여 출력하는 형태 -->
	<ul th:each="datadao:${da}">
		<li th:text="${datadao.uidx}"></li>
		<li th:text="${datadao.uname}"></li>
		<li th:text="${datadao.uemail}"></li>
	</ul>
	
	<br>
	
	<!-- 조건문 -->
	<div th:if=${agree=='Y'} th:text="${agree}"></div>
	<div th:if=${agree=='Y'}>동의함</div>
	<div th:if=${agree=='N'}>동의안함</div>
	
	<br><br>
	
	<!-- radio,checkbox checked하는 방식 , value값 넣는 방식 -->
	<input type="radio" name="agree" th:checked="${agree eq 'Y'}" th:value="${agree}">동의함
	<input type="radio" name="agree" th:checked="${agree eq 'N'}" th:value="${agree}">동의안함
	
	<br><br>
	
	<!-- select option selected -->
	<select>
		<option value="이메일" th:selected="${chart eq '이메일'}">이메일</option>
		<option value="이름" th:selected="${chart eq '이름'}">이름</option>
		<option value="제목" th:selected="${chart eq '제목'}">제목</option>
	</select>
</body>
</html>