카테고리 없음

[ERROR Solution] 프로퍼티를 찾지 못했을 때(PropertyNotFoundException)

Miiko 2021. 10. 23. 21:56
javax.el.PropertyNotFoundException: Property '. . .' not found on type . . .

 

위 에러는

 

${person.name} 와 같이 

EL구문을 사용하는 과정에서 name 에 해당하는 프로퍼티를 찾지 못한 경우이다.

 

 

el구문을 사용하기 위해서는 dto를 자바빈즈 규약에 맞게 만들어야 하는데, 

Person dto의 멤버변수인 name이 

 

    1. Name으로 앞에 대문자가 오는 경우

    2. nAme처럼 두 번째에 대문자가 오는 경우

 

두 경우에서는 에러가 발생한다.

 


 

1번 경우

통상적으로 getter와 setter는 get / set + (앞 글자를 대문자로 바꾼 멤버변수 명)으로 이루어지는데,

name 같은 경우의 getter는 getName()이 될 것이다.

 

그리고 

el구문이 프로퍼티를 찾는 과정은

getName()에서 get을 뺀 이름이 프로퍼티가 되어 그 이름을 찾는데

멤버변수가 이미 Name이라면, 정상적으로 프로퍼티를 찾을 수 없게 되는 것이다. 

 


 

2번 경우

최근에 이 문제로 에러가 또 났었다. 하지만 1번 경우가 아닌 

pName, pPrice 와 같이 

맨 앞글자는 소문자이고 두 번째 글자가 대문자인 경우였는데, 이 경우에도 정상적으로 프로퍼티를 찾지 못해 PropertyNotFoundException이 발생했다. 

이 경우의 이유는 정확하게 모르겠지만 두 번째 글자까지는 대문자를 쓰지 않는 것이 좋겠다는 결론을 얻었다.

 


 

⭐결론⭐

카멜케이스 쓰는건 좋지만 두 번째 자리까지는 대문자 쓰지 말자!