메인 페이지에서 상세 페이지로 넘어갈 때 특정 값만 출력이 되지 않는 문제 해결(ModelMapper 문제)

myminimin·2023년 10월 13일
0

Spring/Springboot

목록 보기
21/21
post-custom-banner

문제 발생🤪

메인 페이지에서 상세 페이지로 넘어갈 때 특정 값만 출력이 되지 않았음

  • 원인 : 'Item' 엔티티의 'title' 필드와 'ItemFormDto'의 'itemNm' 필드 간에 매핑이 제대로 이루어 지지 않음. 근본적인 원인은 'ModelMapper'에서 필드 이름이 달라서 매핑을 수행하지 못한 것 같음.

여기에서 웃긴게 title 말고도 Item 엔티티의 detail 필드가 ItemFormDto에서는 itemDetail로 되어있는데 detail은 가지고 와지는데 title만 출력이 안됐다.... 그래서 이게 문제일거라고는 생각도 못했다 🤬 애초에 왜 둘의 필드명이 다르냐구요? 저도 같게 하고싶었어요 ^^......

- 해결 과정 :

  1. 코드 검토 : 코드를 검토해서 'ItemFormDto'의 매핑 부분이 문제가 있는지 확인.

  2. ModelMapper 매핑 규칙 설정 :
    아래와 같이 매핑 규칙을 설정해줬지만 여전히 itemNm을 가지고 오지 못했다.

    @Configuration
    public class ModelMapperConfig {
    
       @Bean
       public ModelMapper modelMapper() {
           ModelMapper modelMapper = new ModelMapper();
    
           modelMapper.addMappings(new PropertyMap<Item, ItemFormDto>() {
               protected void configure() {
                   map().setItemNm(source.getTitle());
                   map().setItemDetail(source.getDetail());
                   // 다른 규칙들...
               }
           });
    
           return modelMapper;
       }
    }

    3. 직접 필드 매핑 : 'ModelMapper'의 자동 매핑 기능을 우회하고 'Item' 엔티티와 'ItemFormDto' 간의 필드를 직접 명시적으로 매핑하는 방법을 사용!!!! (😭해결완료)

- 결론

  • 라이브러리나 프레임워크의 자동화된 기능이 예상대로 동작하지 않을 때, 직접적인 방법을 사용하는 것이 효과적일 수 있다!
  • 이번 경우에서는 'ModelMapper'의 자동 매핑 대신 직접 매핑하는 방법을 통해 문제를 해결할 수 있었다.

post-custom-banner

0개의 댓글