ibatis에서 select 결과를 dto로 맵핑시 숫자 컬럼에 null 이 들어가는 경우.

oracle에서 number 형태로 지정된 컬럼을 dto에 맵핑하는데 자꾸 IllegalArgumentException이 발생해서 도대체 왜 그런지….원인을 못찾고 삽질을 한시간 넘게 하다가 결국 원인을 찾아서…다음에 동일한 현상이 발생할때를 대비해서 기록….

일단 단순히 생각해봐도 argument가 올바른 형태가 아니기 때문이라는걸 추측할 수 있었는데, 왜 진작 데이터를 확인하지 않았는지 모르겠다.

쿼리를 수행했을때 나오는 결과값 상으로는 사실 문제가 없어 보였다….
수십건의 결과데이터 중에서 윗부분만 보고, 아랫부분까지 확인을 안했으니 당연히 정상이라고 생각했던게 실수….

한시간 넘게 삽질하다가 아무리봐도 문제가 없는데…….없는데….없는데…..하다가 쿼리에서 숫자 컬럼을 nvl() 함수로 처리했더니 무사 통과………. 그래서 쿼리 실행결과를 다시 첨부터 끝까지 확인해보니…중간에 null값인 레코드가 존재하는………….황당한 상황..;;;

역시 에러메시지는 명확한데……..사람이 멍청해서 엉뚱한데서 고민하는듯…..;;

Dynamic HTML DOM Object 생성 후 event연결시 IE에서 문제가 되는 경우.

샘플 코드는 귀찮아서 생략하고, 현상과 해결방안만 기술해보는데, 아래 나오는 내용은 그냥 개념적으로 적는 내용이다 보니….알아서 걸러들어야 함…;;;

ie9, chrome, firefox, opera 등에서는 dynamic dom object를 생성해서 jquery(‘#xxx’).append(dynamicObj); 형태로 추가하고, $(‘#dynamicObj’).bind(function() {xxx}) 형태로 이벤트를 걸어주면 작동하는데 전혀 문제가 없는데, IE8을 포함한 이전 버전에서는 위의 형태로 작업하는 경우 이벤트가 걸리지 않는 현상이 발생했었다.

해결책을 위해 dynamicObj에 들어갈 내용을 text형태로 변수에 담아서 append한 경우에는 정상적으로 작동하는……희한한 현상…

dynamicObj안에 들어갈 내용이 짧다면 상관없겠지만, 복잡하고 긴 내용이라면 대부분은 화면의 특정 영역에 복사될 내용을 숨겨두고 var dynamicObj = $(‘#tempObj’).clone(); 형태로 해당 내용을 복사해서 사용하는데, clone()으로 복사한 dynamicObj를 typeof로 확인해보면 일반 string형태가 아니라, Object형태로 반환되며, 이 object 형태로 반환된걸 $(‘#ddd’).append(dynamicObj); 로 추가하고, $(‘#dynamicObj’).attr() 이나, $(‘#dynamicObj’).bind()를 이용했을때, 멍청한 구버전의 IE에서 오작동을 한다.

이를 피하기 위해서 var dynamicObj = $(‘#tempObj’).clone().html(); 형태로 복사를 하게되면 object가 아니라 string 형태로 받을 수 있으며, 이를 append()하고 나서 이벤트를 걸어주면 정상 작동할 것이라 생각된다.;;;;;;
(아직 이렇게 실행은 안해봤고, 예전에 경험을 바탕으로 object가 아닌 string으로 append()하면 정상작동 했기에, 위의  방법도 정상작동하리라 추정하는 무책임한…….)