본문 바로가기
스프링과 JPA 기반 웹 어플리케이션 개발/4부 스터디

50. 스터디 구성원 조회

by Backchus 2020. 4. 23.

 

타임리프 fragment에 리스트와 true/false 전달하기

<div th:replace="fragments.html::member-list (members=${study.managers},isManager=${true})" 
	class="row px-3 justify-content-center"></div>

 

타임리프 fragment

<div th:fragment="member-list (members, isManager)" class="row px-3 justify-content-center">
    ...
</div>

 

스터디 멤버를 조회하는 핸들러 구현

package me.weekbelt.studyolle.study;

@RequiredArgsConstructor
@Controller
public class StudyController {

    // .......
    
    @GetMapping("/study/{path}/members")
    public String viewStudyMember(@CurrentAccount Account account,
                                  @PathVariable String path, Model model) {
        model.addAttribute(account);
        model.addAttribute(studyRepository.findByPath(path));
        return "study/members";
    }
}

 

스터디 멤버 조회 페이지에 관련된 fragment를 fragments.html에 추가

<div th:fragment="member-list (members, isManager)" class="row px-3 justify-content-center">
    <ul class="list-unstyled col-10">
        <li class="media mt-3" th:each="member: ${members}">
            <svg th:if="${#strings.isEmpty(member?.profileImage)}" th:data-jdenticon-value="${member.nickname}" width="64" height="64" class="rounded border bg-light mr-3"></svg>
            <img th:if="${!#strings.isEmpty(member?.profileImage)}" th:src="${member?.profileImage}" width="64" height="64" class="rounded border mr-3"/>
            <div class="media-body">
                <h5 class="mt-0 mb-1"><span th:text="${member.nickname}"></span> <span th:if="${isManager}" class="badge badge-primary">관리자</span></h5>
                <span th:text="${member.bio}"></span>
            </div>
        </li>
    </ul>
</div>

 

study/member.html 생성

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="fragments.html::head"></head>
<body class="bg-light">
    <div th:replace="fragments.html::main-nav"></div>
    <div th:replace="fragments.html::study-banner"></div>
    <div class="container">
        <div th:replace="fragments.html::study-info"></div>
        <div th:replace="fragments.html::study-menu(studyMenu='members')"></div>

        <div th:replace="fragments.html::member-list(members=${study.managers},isManager=${true})"></div>
        <div th:replace="fragments.html::member-list(members=${study.members},isManager=${false})"></div>
        
        <div th:replace="fragments.html::footer"></div>
    </div>
    <script type="application/javascript">
        $(function () {
            $('[data-toggle="tooltip"]').tooltip()
        })
    </script>
</body>
</html>

 

 

참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#

 

스프링과 JPA 기반 웹 애플리케이션 개발 - 인프런

이 강좌에서 여러분은 실제로 운영 중인 서비스를 스프링, JPA 그리고 타임리프를 비롯한 여러 자바 기반의 여러 오픈 소스 기술을 사용하여 웹 애플리케이션을 개발하는 과정을 학습할 수 있습니다. 이 강좌를 충분히 학습한다면 여러분 만의 웹 서비스를 만들거나 취직에 도움이 될만한 포트폴리오를 만들 수 있을 겁니다. 활용 웹 개발 프레임워크 및 라이브러리 Java Spring Spring Boot Spring Data JPA Thymeleaf 온라인 강의 스

www.inflearn.com