인프런 커뮤니티 질문&답변

나도 하고 싶어 개발자님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

상품 수정

dto 관련 질문있습니다

작성

·

147

0


=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

처음에 updateItem에 id없이 그냥 form만 넘겨주니
Caused by: java.lang.IllegalArgumentException: id to load is required for loading 라는 오류가 떠서

컨트롤러에서 updateItem메소드에 form과 같이 id를 넘겨주니 해결됐습니다.
스크린샷 2024-05-31 오후 4.16.36.png질문 : 수정페이지에서 제출을 하게되면 컨트롤러의 updateItem의 (updateItemDTO form)에 id도 저장되서 service로 넘어가는게 아닌가요?

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 나도 하고 싶어 개발자님

해당 오류는 아마도 @PathVariable에서 itemId가 없다면 컨트롤러 자체에서 오류가 발생할거에요.

스프링 컨트롤러에서 @PathVariable의 값은 필수로 들어와야 합니다. 이것이 기본값입니다. required 옵션으로 필수여부의 변경은 가능합니다. 감사합니다.

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과 관련하여, id값을 주입하여 객체를 업데이트 하는 방식과 관련해서 알맞은 예시를 찾았습니다. 질문자님이 제시한 문제는 컨트롤러에서 @PathVariable을 통해 id를 받고, 이 id와 함께 폼 데이터(UpdateItemDTO form)를 서비스 계층에 전달하여 업데이트를 실행하는 과정에서 발생한 것으로 보입니다. 이와 비슷한 상황에 대한 처리 방법을 설명한 다음 답변이 도움이 될 수 있습니다:

  • updateitem dto관련: 이 게시글에서는 UpdateItemDto를 활용한 아이템 업데이트 로직을 컨트롤러에서 구현하는 방법에 대해 설명하고 있습니다. 특히, @PathVariable로 받은 id와, @ModelAttribute로 받은 폼 데이터를 UpdateItemDto 인스턴스로 조합하여 서비스 계층의 업데이트 메소드에 전달하는 방식이 언급되어 있습니다.

이 질문에서는 컨트롤러에서 id와 폼 데이터를 함께 서비스 계층에 넘기는 방식을 사용하였고, 이로 인해 java.lang.IllegalArgumentException: id to load is required for loading 오류가 해결되었다는 점을 언급하고 있습니다. 이는 @PathVariable로 받은 id가 서비스 계층의 업데이트 메소드로 올바르게 전달되었음을 나타냅니다. 또한, DTO 객체 안에 id도 포함되어 서비스로 넘어가는지에 대한 질문과 관련하여, DTO 설계 시에 id 필드를 포함시키면 id 값도 함께 전달될 수 있음을 의미합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.