1. Thymeleaf와 ajax 이용해서 화면 깜빡임 없이 데이터를 추가하기
댓글 작성이나, 더보기 버튼을 구현할 때 유용한 방법이다.
이 방법을 사용하지 않았다면 append 쓰면서 더럽게 html 코드를 짜야했을 수도,,
2. 구축 환경
- IntelliJ 2021.3 (community 버전)
- Thymeleaf
- SpringBoot 2.1.3.RELEASE
3. 코드
1. controller 부분 작성하기
@Controller
public class AjaxTestController {
@GetMapping("/get/member")
public String getMembers(Model model) throws Exception {
Map<Integer, String> memberList = new HashMap<>(); // <번호, 이름>으로 구성된 가상의 멤버 리스트
memberList.put(1, "가");
memberList.put(10, "나");
memberList.put(20, "다");
memberList.put(200, "라");
model.addAttribute("memberList", memberList);
return "index :: #moreList"; // template html 파일 이름 + '::' + fragment의 id
}
}
2. 스크립트 부분 작성하기
$.ajax({
url: "/get/member,
type: "GET",
})
.done(function (fragment) {
//$('#hiList').replaceWith(fragment);
$('#hiList').append(fragment);
});
3. html 작성하기
<!-- 파일 목록 -->
<ul id="hiList">
<li>
</li>
<!-- viewmore 클릭시 목록 뿌려주는 부분 -->
<th:block th:if="${memberList != null}" >
<li id="moreList" th:fragment="moreList">
</li>
</th:block>
</ul>
<!-- 파일 목록 -->
<!-- viewmore -->
<div class="btnWrap">
<a href="javascript:void(0);" class="btn more" id="hi">View more</a>
</div>
th:fragment="moreList" 라는 Attribute를 추가한다.
이것은 Ajax를 통해 받아온 데이터를 활용해서 이 부분 전체 태그를 교체해주기 위한 역할을 함.
'Front > Thymeleaf' 카테고리의 다른 글
[Thymeleaf] 타임리프 th:onclick 사용하기 (0) | 2022.07.30 |
---|---|
[Thymeleaf] 유용한 타임리프 문법 #2 (0) | 2022.05.12 |
[Thymeleaf] 유용한 타임리프 문법 #1 (0) | 2022.03.16 |
[Thymeleaf] a 태그 문자열 조합하여 사용하기 (0) | 2022.03.10 |
[Thymeleaf] map 데이터 꺼내기 (2) | 2022.02.11 |
댓글