본문 바로가기

4. 테크니컬&팁/4.1.Java

Unable to find setter method for attribute 해결방법

JSP를 이용하여 프로그램을 작성하였고,
아래와 같은 오류를 보게 되었습니다. 으흠..

Unable to find setter method for attribute XXX

위의 오류는 jsp에서 User defined TAG Lib를 사용하면서 발생한 문제인데..

제가 한것이라고는 기존 jeus 5.0에서 실행되던 앱을 jeus 6.0에 포팅한것뿐..
아무튼 원인은 아래와 같습니다. 

<tag>

<name>popinput</name>

<tag-class>com.어쩌구.PopupInputTag</tag-class>

<body-content>JSP</body-content>

   <attribute>

     <name>type</name>

     <required>true</required>

     <rtexprvalue>true</rtexprvalue>

   </attribute>

   <attribute>

     <name>name</name>

     <required>true</required>

     <rtexprvalue>true</rtexprvalue>

   </attribute>

   <attribute>

     <name>attributebtn</name>

     <required>false</required>

     <rtexprvalue>true</rtexprvalue>

   </attribute>

   <attribute>
... 어쩌구. 

 taglib를 정의한 xml파일의 일부.

 public void setAttributeBtn(String pAttributeBtn) {

        this.sAttributeBtn = pAttributeBtn;

    }

Tag lib를 구현한 java파일의 일부.

원인은 아무튼 setAttributeBtn이라는 부분때문이었습니다.
당연히 어트리뷰트 이름이 모두 소문자 이므로... Method도 setAttributebtn으로 되어 있어야 하는데..
B가 대문자였던겁니다.

그런데.. 제우스 5.0에서는 위의 코드가 잘 돌아갔고..
제우스 6.0에서는 위의 코드가 돌아가지 않았습니다....

아마도 제우스 5.0 이 개발자 편의를 위해 허용한 부분이었겠지요??

저같이 고생하지 마시라고 적어봅니다.