el 태그를 어떻게 수정해야 할지 찾아보다가 해결방법을 찾았다!
먼저 bookmark domain에 Mountain을 추가해준다
Bookmark.java
package com.project.bookmark.domain;
import java.util.Date;
import com.project.mountain.domain.Mountain;
import lombok.Data;
@Data
public class Bookmark {
private int id;
private int mtId;
private int userId;
private Mountain mountain;
private Date createdAt;
private Date updatedAt;
}
BookmarkController.java
@GetMapping("/bookmark-list-view")
public String bookmarkListView(
Model model,
HttpSession session) {
// 로그인 여부 조회
Integer userId = (Integer)session.getAttribute("userId");
if (userId == null) {
// 비로그인이면 로그인 화면으로 이동
return "redirect:/user/sign-in-view";
}
List<Bookmark> bookmarkList = bookmarkBO.getBookmarkListByUserId(userId);
for (Bookmark bookmark : bookmarkList) {
Mountain mountain = mountainBO.getMountainById(bookmark.getMtId());
bookmark.setMountain(mountain);
}
model.addAttribute("bookmarkList", bookmarkList);
model.addAttribute("viewName", "bookmark/bookmark");
return "template/layout";
}
그래서 bookmarkList가 뷰에 전달될 때 각 bookmark객체에는 연관된 mountain객체에 대한 참조가 있으므로 el표현식에 사용이 가능하게 된다
bookmark.jsp
<c:forEach items="${bookmarkList}" var="bookmark">
<div class="mount-box rounded mb-2">
<div class="d-flex align-items-center justify-content-between">
<a href="/mountain/mountain-review-view?mtId=${bookmark.mountain.id}">
<div class="p-3">
<h3 class="font-weight-bold">${bookmark.mountain.mtName}</h3>
<h6>${bookmark.mountain.mtLocation}</h6>
</div>
</a>
</div>
</div>
</c:forEach>
jsp를 이렇게 작성해주면 즐겨찾기 페이지에서의 문제들이 모두 해결됐다