티스토리 뷰

 

 

리뷰 목록과 평균점수 두가지의 결과를 보고싶어서 아래와 같이 뷰 페이지를 똑같이 입력해주었다.

 

	@GetMapping
	public String requestReviewList(Model model) {
		List<LessonReview> list = lessonReviewService.readAllReviewList();
		model.addAttribute("reviewList",list);
		return "/Lesson/reviews";
		
	}

	@GetMapping("/avg")
	public String getAvgScore(Model model){
		double avgScore = lessonReviewService.calculateAvgScore();
		model.addAttribute("avgScore",avgScore);
		return "/Lesson/reviews";
	}

 

 

그 결와 아래와 같이 avg의 결과만 출력되는 것을 볼 수 있었다.

 

 

이것의 이유는 두 메서드가 같은 view 경로를 반환하는 경우에는 둘 중 어떤 메서드든 마지막에 호출된 /Lesson/rievews를 반환하는 메서드의 모델만 유효하게 된다.

그렇기 때문에 각 메서드의 결과가 덮어씌워져 위와 같이 평균점수만 출력되는 것을 볼 수 있다.

 

두 메서드의 결과가 함께 출력되기 위해서는 컨트롤러의 수정이 필요하다.

 

 

 


 

두 메서드의 결과가 함께 출력되기 위해 model.Attribute를 사용해 모델에 속성을 추가해주어야한다.

그럼 두 메서드에서 추가된 속성들이 누적되어 /Lesson/reviews 페이지에서 모두 사용 가능하게 된다.

즉, 이전과 다르게 모델의 유효 범위가 확장된다는 뜻이다.

 

이와 같이 사용을 하면 하나의 메서드에 여러 메서드에서 추가한 속성을 누적하여 사용할 수 있다.

 

 

 

아래는 수정한 코드이다.

avg를 따로 작성했던 이전과 다르게 하나의 메서드에 모델 속성을 추가해주었다.

 

	@GetMapping
	public String requestReviewList(Model model) {
		List<LessonReview> list = lessonReviewService.readAllReviewList();
		double avgScore = lessonReviewService.calculateAvgScore();
		model.addAttribute("reviewList",list);
		model.addAttribute("avgScore",avgScore);
		
		return "/Lesson/reviews";
		
	}

 

 

코드를 수정한 후 다시 목록을 보면 아래와 같이 평균점수와 리뷰 목록들을 같이 표기하는 것을 볼 수 있었다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday