본문 바로가기
DEV/JAVA

@RequestBody 파싱이 안되고 Null로 나올때

by 땅콩둘기 2024. 3. 4.
반응형

원인

첫 번째 글자가 소문자고 두 번째 글자가 대문자라서 발생하는 문제

 

테스트 과정

댓글 기능을 개발하면서 부모댓글ID명을 pCommentId로 지정했다.

{
   "pCommentId" : "12345678"
  }

로 ajax에 담아서 전달을 했는데!!!!!!!

컨트롤러에서 전달받지 못하는 현상이 발생했다.

@Data
@NoArgsConstructor
public static class CommentModel {
    String pCommentID;
}

@Data를 사용해서 getter, setter를 만들어줬음에도 찾지 못하고 있었다.

한참을 찾아보니 첫글자가 소문자이고 바로 다음글자가 대문자인 경우에는 Jaskson에서 setPCommentId(), getPCommentId()을 찾는 게 아니라 setpCommentId(), getpCommentId() 함수를 찾습니다. 이 함수가 없기 때문에 그냥 무시하고 넘어가게 되고 결국 null 값을 가지게 됩니다.

해결방법

1. @Data를 사용해서 getter, setter를 만드는 것이 아니라 직접 @setPCommentId(), @getPCommentId() 만들어주기

2. 아래와 같이 @JsonProperty를 사용해서 명시해주는 방법

@JsonProperty("pCommentId")
String pCommentId;

으로 해결할 수 있는데 개인적으로는 2번을 사용하는게 코드상으로 깔끔한것 같습니다.

 

반응형

댓글