02 May 2019
Study manager 프로젝트 진행과정12
2019.05.02 Study Manager 프로젝트 진행과정 12
main에서 category클릭하면 category에 해당하는 study만 불러오기
- category를 눌렀을 때, 해당 category에 맞는 study만 보여주도록 했다.
- category를 눌렀을 때와 누르지 않았을 때를 나누어 링크를 설정하였다.
- category를 누르면 category id를 pathvalue로 가지고 가서 user id와 함께 service로 넘겨서 repository를 통해 study를 가져오도록 했다.
view
<nav class="categorymenu"> <ul> <li th:each="category: ${categories}"> <a th:href="'/study/list/'+${category.categoryId}" th:text="${category.categoryName}"></a> </li> </ul> </nav>
controller
@GetMapping("/list/{categoryId}") public String getStudiesByCategoryId(@PathVariable Long categoryId, Model model){ StudyManagerSecurityUser securityUser = (StudyManagerSecurityUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); model.addAttribute("isLogin",(!SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals("anonymousUser"))? true : false); model.addAttribute("studyList",studyService.getStudiesByUserIdAndCategoryId(securityUser.getId(),categoryId)); model.addAttribute("categories",categoryService.getCategories()); return "/study/main_"; }
service
@Transactional(readOnly = true) public List<Study> getStudiesByUserIdAndCategoryId(Long userId, Long categoryId) { return studyRepository.getStudiesByUserIdCategoryId(userId, categoryId); }
repostory
@Query("SELECT s FROM Study s INNER JOIN s.studyUsers su INNER JOIN su.studyUserId sui INNER JOIN sui.user u INNER JOIN s.category c " + "WHERE u.userId =:userId AND c.categoryId =:categoryId") public List<Study> getStudiesByUserIdCategoryId(@Param("userId") Long userId, @Param("categoryId") Long categoryId);
- main의 로고를 누르면 다시 전체 study list를 불러오도록 했다.
Til next time,
Jeong-Yoon
at 00:00
