티스토리 뷰
리뷰 목록과 평균점수 두가지의 결과를 보고싶어서 아래와 같이 뷰 페이지를 똑같이 입력해주었다.
@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";
}
코드를 수정한 후 다시 목록을 보면 아래와 같이 평균점수와 리뷰 목록들을 같이 표기하는 것을 볼 수 있었다.
'코딩 > 오류 노트' 카테고리의 다른 글
[spring] 쿼리문 오류 (template.queryForObject() /template.query() ) (0) | 2024.02.20 |
---|---|
[spring] 평균점수 소수점 자릿수 표현 (0) | 2024.02.20 |
[spring] 출력 값 오류 (model.addAttribute / DB return) (0) | 2024.02.20 |
소수점 자릿수 표현하기 (0) | 2024.02.19 |
[인코딩 오류] (0) | 2024.02.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday