프론트에서 날짜 정보를 보냈음에도 불구하고 RequestParam에서 해당 값을 변환하지 못하는 문제 발생하였다.
프론트에서 보내는 형태가 LocalDate
이지만 LocalDateTime
으로 변환할려고 하니 문제가 발생하였다.
즉 HTTP 요청 파라미터의 문자열 포맷과 @DateTimeFormat
어노테이션의 패턴이 일치하지 않아 변환 오류 발생한걸로 추정된다.
LocalDateTime
객체가 아닌 LocalDate
객체로 우선해서 받는다. 프론트에서 보내는 형태가 LocalDate임으로 변환 방법 확인 및 적용
LocalDate
를 이용해서 검색 기간을 조건을 추가해 QueryDsl로 조회한다. public BookDonationEventOnlyPageResponseDto getDonationEventOnlyV3(PageRequest pageRequest, Long donationId, LocalDate eventStartDate, LocalDate eventEndDate) {
QBookDonationEvent qBookDonationEvent = QBookDonationEvent.bookDonationEvent;
BooleanBuilder builder = new BooleanBuilder();
if(donationId!=null)
builder.and(qBookDonationEvent.donationId.eq(donationId));
if(eventStartDate!=null)
builder.and(qBookDonationEvent.createdAt.after(eventStartDate.atStartOfDay()));
if(eventEndDate!=null)
builder.and(qBookDonationEvent.closedAt.before(eventEndDate.atStartOfDay()));
Page<BookDonationEvent> bookDonationEvents =bookDonationEventRepository.findAll(builder,pageRequest);
int totalPages = bookDonationEvents.getTotalPages();
List<BookDonationEventOnlyResponseDto> bookDonationEventResponseDtos = bookDonationEvents.stream().map(BookDonationEventOnlyResponseDto::new).toList();
return new BookDonationEventOnlyPageResponseDto(bookDonationEventResponseDtos, totalPages);
}