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

김윤식님의 프로필 이미지
김윤식

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원가입 등록 이후 두번째 회원가입부터 오류 발생

작성

·

46

·

수정됨

0

2024-10-02T00:24:30.390+09:00 ERROR 17692 --- [hi-spring] [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "com.example.hi_spring.domain.Member.getName()" is null] with root cause

java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "com.example.hi_spring.domain.Member.getName()" is null

at com.example.hi_spring.repository.MemoryMemberRepository.lambda$findByName$0(MemoryMemberRepository.java:31) ~[classes/:na]

at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178) ~[na:na]


회원가입에서 이름 입력 이 후 두번째부터 회원가입 등록 시 위와 같은 오류메세지가 나타납니다.

회원목록 화면으로 가보아도 처음에 정상적인것처럼 등록한 이름도 나오지 않고,

 

#이름

  1.  

 

 

위와 같은 화면으로 숫자만 생성되어 있고 빈칸으로 나옵니다.

 

오류메세지에서는 findByName 부분이 잘못 되어졌다고 나오는데 오류원인이 무엇인지 모르겠습니다.

도움부탁드립니다.

답변 2

0

안녕하세요. 김윤식님, 공식 서포터즈 OMG입니다.

Member 클래스의 getName()return null;null을 반환하는지 확인해주세요 😀

 

오류 원인 단서 메시지

"com.example.hi_spring.domain.Member.getName()" is null

 

감사합니다.

김윤식님의 프로필 이미지
김윤식
질문자

감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 김윤식님.

질문 주신 회원가입 등록 시 발생하는 오류와 관련하여, 같은 문제를 다룬 여러 질문과 답변을 통해 해결 방법을 안내해 드립니다.

  1. 멤버 테스트중 회원 가입 테스트시에 에러가 발생해서여

    • 이 경우, memberRepository를 주입받지 못해 null 예외가 발생하는 것을 해결합니다. private memberRepository 변수를 final로 변경하여 주입이 확실히 되도록 설정해주시면 됩니다.
    • 이미지 URL
  2. 테스트 케이스 작성시 findByName메서드 NullPointException 에러

    • Member 클래스의 setName 메소드에서 파라미터 이름이 잘못되어 null이 설정되었을 가능성이 있으니 확인해 보세요.
    • 이미지 URL
  3. findByName에서 npe 오류 여쭤봅니다

    • 이 경우, Member 클래스와 Repository에서 이름 설정과 관련된 코드를 점검해 주세요.
  4. 에러 문의

    • 여기서는 getName() 메서드에서 반환값이 null이기 때문에 발생한 에러를 해결합니다. member 또는 getName() 호출 시 값이 잘 들어오는지를 확인하고 수정해야 합니다.
    • 이미지 URL

김윤식님이 언급하신 구체적인 오류는 Member 객체의 name 필드가 null인 상태에서 equals 메서드가 호출된 경우입니다. 이러한 오류를 해결하려면 다음을 확인해 보세요:

  1. HTML form에서 name 필드가 올바르게 설정되었는지 확인해 보세요:

    • 예시:
      
      <input type="text" id="name" name="name" placeholder="이름을 입력하세요">
      

  2. Member 클래스의 setName 메서드와 관련하여 올바른 변수명이 사용되었는지 확인하세요.

    • 예시:
      
      public void setName(String name) {
        this.name = name;
      }
      

  3. MemoryMemberRepository 클래스에서 save 메서드가 member의 이름을 올바르게 설정하고 있는지 확인해 보세요.

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

김윤식님의 프로필 이미지
김윤식
질문자

강의내용중의 MemberForm 클래스에서 setName() 파라미터 값이 비어져 있어서 나던 오류였습니다. 감사합니다.

김윤식님의 프로필 이미지
김윤식

작성한 질문수

질문하기