Thymeleaf(inline, classappend), sequence
2024. 6. 14. 19:23ㆍJSP+Spring Boot
th:inline = "javascript"
- script 태그에 작성하는 속성
- 타임리프 문법으로 출력된 내용/값을 JS에 알맞는 타입으로 변환
<h3 id="message"></h3>
<h3 id="num1"></h3> <!-- num1 숫자 1000이 뜨도록 -->
<script th:inline="javascript">
//JS Inline
//html 파일 실행시 js 내부 타임리프 코드 오류를 발생하지 않도록 함
// + html 문법 오류 해결
const message = "message값";/* ${message}*/
document.querySelector("#message").innerText = message;
const num1 = 1000;
document.querySelector("#num1").innerText = num1;
</script>
@GetMapping("ex5")
public String ex5(Model model) {
//message 값으로 전달할 값 작성하기
model.addAttribute("message", "타임리프 + JS 사용 예제");
}
th:classappend
- 요소에 class 속성 값을 동적으로 추가
<h4 th:classappend="red">th(타임리프)에서 제공하는 class(스타일태그) append(추가)</h4>
<h4 th:classappend="green">초록색 색상 태그 실행 중</h4>
<h4 class="red "th:classappend="deco">class랑 classappend 같이 쓰기</h4>
<!-- class와 classappend가 모두 적용됨. 마지막에 작성해준 게 적용됨 -->
<h4 class="green" th:classappend="deco">초록 글씨에 밑줄 치기</h4>
안전 탐색 연산자 : ${객체?.필드}
- 객체가 null인지 판단 후 null이 아닌 경우 수행
ex) 타임리프로 작성한 변수명이 controller에서 이름이 다르거나 존재하지 않으면 에러발생
-> 안전 탐색 연산자를 사용하면 에러 발생을 방지 가능
<h4 th:text="${std?.studentNo}">학번</h4>
<!-- Controller에 해당하는 값이 있으면 보여주고 아니면 에러없이 넘어감 -->
<!-- std로 이름이 존재하면 이름이 보이게 설정 -->
<h4 th:text="${std?.name}" >이름</h4>
<h4 th:text="${mem?.memberNo}"></h4>
<h4 th:text="${mem?.name}"></h4>
<h4 th:text="${mem?.age}"></h4>
@GetMapping("ex5")
public String ex5(Model model) {
StudentDTO std = new StudentDTO();
std.setStudentNo("2222");
std.setName("김옥자");
model.addAttribute("std",std);
MemberDTO mem = new MemberDTO();
mem.setMemberNo(1);
mem.setName("김상호");
mem.setAge(20);
model.addAttribute("mem",mem);
return "example/ex5";
}
번호를 자동으로 만들기 sequence
- 시작부터 끝까지 번호로만 이루어진 숫자 배열 생성
- 사용법
${#numbers.sequence(시작, 끝 [, step])} : 번호 발생기
ex)1부터 5까지 출력하기
${#numbers.sequence(1, 5)}
- 타임리프 반복문(th:each)는 향상된 for문으로, 일반 for문의 동작을 못하기 때문에
이를 해결하기 위해 sequence를 사용
- 일반 for문(시작부터 끝까지 일정 간격만큼 증가해서 반복)
* th:text에 변수 이외 글자를 넣길 원한다면 "|텍스트와 변수명|" 작성
<ul>
<li th:each="i : ${#numbers.sequence(11,20,2)}"
th:text="|테스트${i}|"></li>
</ul>
<!--
<li th:each="i : ${#numbers.sequence(11,20,2)}"
숫자 반복 시작(시작할숫자, 한계점숫자, 1이외 다른 간격설정)
th:text="|테스트${i}|"></li>
i로 숫자를 전달 받고 th:text="${i}"안에 i값 전달
-->
'JSP+Spring Boot' 카테고리의 다른 글
상품 등록 폼 만들기(resources 파일)(insert) (0) | 2024.06.17 |
---|---|
상품등록 폼 만들기(Java 파일)(insert) (0) | 2024.06.17 |
Thymeleaf(switch, case) (0) | 2024.06.14 |
Thymeleaf (if, unless) (0) | 2024.06.14 |
Thymeleaf(parameter, utext) (0) | 2024.06.14 |