24.02.04

서린·2024년 2월 4일

혼자개발

목록 보기
37/82

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";
	}

컨트롤러도 수정해준다 for문을 통해서 bookmarkList의 각 bookmark 객체를 반복하는 루프를 만든다 이 루프로 bookmark객체를 해당 mountain객체와 연결한다 id로 mountain을 검색한다 mountain을 얻어온 후 `setMountain`으로 현재 bookmark객체 내에 mountain객체를 연결한다

그래서 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를 이렇게 작성해주면 즐겨찾기 페이지에서의 문제들이 모두 해결됐다

0개의 댓글