공구리
625
2018-04-23 11:08:47 작성 2018-04-23 11:51:09 수정됨
15
1537

JAVA) EL 객체 접근 시 첫글자 대소문자 관련 문제



public class class USER {

private String USER_NAME;

...이하 getter / setter

}


EL 문법에서 ${vo.USER_NAME} 으로 변수에 접근하면

javax.el.PropertyNotFoundException 에러가 나고

첫글자를 소문자로 ${vo.uSER_NAME} 로 호출하면 정상 접근이 됩니다.


물론 ${vo.getUSER_NAME() }을 하면 되구요.


이런 증상이 생기는 이유와 해결 방법이 궁금합니다.



//추가1

다른 협업자가 생성한 VO를 사용하면 EL 대문자 접근이 잘 됩니다...  같은 JSP 내에서요.

-1
0
  • 답변 15

  • 춤과파티
    693
    2018-04-23 11:10:59

    거시기 카멜표기법을 기준으로 호출할꺼에요 아마 글서 그런거에용

    카멜표기법을 쓰시는게 더 좋지 않을까용?

    0
  • LichKing
    14k
    2018-04-23 11:18:31

    getter를 어떻게 만드셨어요?


    0
  • 공구리
    625
    2018-04-23 11:22:43

    //LichKing

    이클립스의 generate getter and setter 기능으로 자동생성해서 만들었습니다.

    대략 이런 모양입니다.

    public String getUSER_NAME() {
    		return USER_NAME;
    	}
    
    	public void setUSER_NAME(String uSER_NAME) {
    		USER_NAME = uSER_NAME;
    	}


    0
  • LichKing
    14k
    2018-04-23 11:31:03 작성 2018-04-23 11:31:24 수정됨

    대략이 아니라 정확하게 메서드명같은거 토씨하나 안틀리고 저렇게 구현되어있는거죠?

    0
  • 공구리
    625
    2018-04-23 11:31:27

    //춤과파티

    카멜 표기법을 보통 사용하긴합니다만, 내부 개발표준에 의해 대문자를 쓰는 경우가 있고 줄곧 잘 써왔었습니다.  그리고 참 희한하게 다른 협업 개발자가 생성한 VO는 대문자로 에러없이 접근이 됩니다...

    0
  • 춤과파티
    693
    2018-04-23 11:31:54
    이런경우가 있었었는데 문제가 모였드라 ㅜㅜ 잘생각이 나질않네유 ㅜㅜ
    0
  • 춤과파티
    693
    2018-04-23 11:32:36

    public String getUSER_NAME() {
    		return USER_NAME;
    	}
    
    	public void setUSER_NAME(String uSER_NAME) {
    		USER_NAME = uSER_NAME;
    	}

    요기보니까 uSER_NAME 부분이 소문자 u로 시작해서 그런거 아닐까용?
    0
  • 공구리
    625
    2018-04-23 11:36:16

    //LichKing

    대략이라고 표현한건 저런 변수명을 실제로 쓰지 않아 샘플코드로서 변수명을 바꿔서 그렇게 쓴겁니다.

    0
  • LichKing
    14k
    2018-04-23 11:38:00
    일단 컨벤션이 권장하는 컨벤션이 아니라서 좀 그렇긴한데
    el에서 호출하는건 getter입니다. 다른개발자가 만든 getter랑 차이는 없는지 확인해보세요


    0
  • 공구리
    625
    2018-04-23 11:42:24 작성 2018-04-23 13:25:41 수정됨

    //LichKing
    //춤과파티

    네 당연히 해당 증상 생겼을시 가장 먼저 확인했습니다만 동일합니다.

    구글링도 했으나 명확한 원인이나 해결방법을 제시하진 못하더라구요.

    그래서 이렇게 질문글을 올리는거구요.


    정상접근이 되는 VO가서 다시 getter // setter 자동완성해도 정상작동됩니다.

    1
  • 춤과파티
    693
    2018-04-23 11:54:05

    http://blog.daum.net/_blog/BlogTypeView.do?blogid=0JSQj&articleno=4825952

    머 이런글이 2008년도에 있긴한데,,, 왜 다른분은되고 공구리님은 안되실까요 ㅠ

    -1
  • 춤과파티
    693
    2018-04-23 11:55:22

    http://mina1015.tistory.com/entry/javaxelPropertyNotFoundException

    이 분도 이유는 설명안해주고 소문자로 해야된다그러구,,

    -1
  • 춤과파티
    693
    2018-04-23 11:57:44
    http://narei.tistory.com/entry/javaxelPropertyNotFoundException
    이분도 마찬가지 ㅡㅅㅡㅋ
    -1
  • 춤과파티
    693
    2018-04-23 12:07:03

    https://itnmis.wordpress.com/about-it/web-development/debuging/

    -1
  • it_gabage
    510
    2019-02-26 09:40:25

    변수명 vo에서  A_XXX  처럼 다 대문자이고 언더바 앞에 한글자만 있는 경우  el에서 오류나지 않던가요?   a_XXX라고 el에서 호출하먄 멀쩡하고 AA_XXX 으로 변경해서 해도 멀쩡하고요.  테스트 추측으론 언더바 앞에 한글자만 있으면 소문자로 변경해서 오류가나는거같아여. 디비연동을 하다보니 컬럼과 변수명 맞춘다고 대문자로 주로 넘기게되는데.. 그냥 전 vo없애고 map쓰는게 나은듯 

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.