티스토리 뷰
1. url의 id 값 null
상세정보를 클릭하면 리뷰id 값을 가져와 url에 표기되며 해당 리뷰 상세보기 페이지로 이동해야한다. id 값이 제대로 출력되지않아서 아래와 같이 id가 null 값으로 url이 발생되었다.
리뷰 Id 값이 제대로 들어갔는지 다시 확인하기 위해 console에 출력해보았다.
<script>
console.log("리뷰 Id: ${review.reviewId}");
</script>
그럼 아래와 같이 리뷰 Id 값이 null로 뜨는 것을 알 수 있었다.
값이 제대로 들어가지 않은 것을 확인한 후 페이지 이동과 관련 있는 컨트롤러를 살펴보았다.
그 결과 아래와 같은 오류 코드를 발견할 수 있었다.
@GetMapping("/detaile")
public String requestReviewById(@RequestParam("id")String reviewId,Model model) {
LessonReview reviewById = lessonReviewService.readReviewById(reviewId);
model.addAttribute("review",reviewId);
return "/Lesson/review";
}
이 코드를 보면 model.addAttribute에 reviewId를 담아 주는데 이것으로 인해 오류가 발생하여 리뷰Id 값을 불러오지 못한 것이었다.
reviewId를 담게 되면 리뷰 객체를 담아주는 것이 아닌 toString()으로 문자열로 변환된 reviewId를 모델에 추가하는 것이기 때문에 객체에 담긴 reviewId 값은 불러오지 못한다.
그러므로 아래와 같이 수정해주었다.
@GetMapping("/detaile")
public String requestReviewById(@RequestParam("id")String reviewId,Model model) {
LessonReview reviewById = lessonReviewService.readReviewById(reviewId);
model.addAttribute("review",reviewById);
return "/Lesson/review";
}
그럼 이전과 다르게 리뷰 객체를 담아 객체의 속성에 접근하여 리뷰Id가 발생되고 아래와 같이 제대로 url이 발생한다.
2. db에서 불러온 모든 값 null
리뷰 목록을 보면 아래와 같이 사진을 포함한 모든 값들이 null 값으로 해당 값들이 제대로 출력되지 않는 것을 알 수 있다.
이것을 보아 값을 들고오는 DB 연결에 있어 문제가 있다는 것을 파악할 수 있었다.
서비스, 리파지토리를 확인한 결과 문제가 없었고 DB와 실질적으로 연결하는 RowMapper 클래스 코드에 문제가 발생했다.
아래와 같이 return 값을 null으로 지정하여 DB에 저장된 값들을 가지고 오지 않아 null로 표기되었다는 것을 확인했다.
package com.springmvc.repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
import com.springmvc.domain.LessonReview;
public class LessonReviewRowMapper implements RowMapper<LessonReview>{
@Override
public LessonReview mapRow(ResultSet rs, int rowNum) throws SQLException {
LessonReview lessonReview = new LessonReview();
lessonReview.setReviewId(rs.getString(1));
lessonReview.setLessonId(rs.getString(2));
lessonReview.setUserId(rs.getString(3));
lessonReview.setDate(rs.getString(4));
lessonReview.setContent(rs.getString(5));
lessonReview.setScore(rs.getInt(6));
lessonReview.setFileName(rs.getString(7));
return null;
}
}
null 값을 수정하여 코드를 아래와 같이 작성했다.
package com.springmvc.repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
import com.springmvc.domain.LessonReview;
public class LessonReviewRowMapper implements RowMapper<LessonReview>{
@Override
public LessonReview mapRow(ResultSet rs, int rowNum) throws SQLException {
LessonReview lessonReview = new LessonReview();
lessonReview.setReviewId(rs.getString(1));
lessonReview.setLessonId(rs.getString(2));
lessonReview.setUserId(rs.getString(3));
lessonReview.setDate(rs.getString(4));
lessonReview.setContent(rs.getString(5));
lessonReview.setScore(rs.getInt(6));
lessonReview.setFileName(rs.getString(7));
return lessonReview;
}
}
코드를 수정 후 다시 리뷰 목록을 조회한 결과 아래와 같이 정상적으로 값들이 출력되는 것을 볼 수 있다.
'코딩 > 오류 노트' 카테고리의 다른 글
[spring] 평균점수 소수점 자릿수 표현 (0) | 2024.02.20 |
---|---|
[spring] 메서드 (모델 객체 속성 추가 / 여러 메서드를 추가해 모델 유효범위 늘리기) (0) | 2024.02.20 |
소수점 자릿수 표현하기 (0) | 2024.02.19 |
[인코딩 오류] (0) | 2024.02.15 |
[spring] 애너테이션 미작성 오류 (0) | 2024.01.31 |
- Total
- Today
- Yesterday