파이널 프로젝트 중 PropertyNotFoundException을 맞았다.
어서 구글링을 해보니 이미 검색해본 에러..! 고새 나는 내 눈물 맛을 잊은 것인가.
오늘은 두 테이블에 동시에 인서트를 해주기 위해 우선 동일하게 들어가야 할 시퀀스 값을 가져와야 했다.
<select id="chkseq" resultType="int">
select g_seq.nextval seq from dual
</select>
매퍼에는 아주 간단한 쿼리문이 들어갔다.
그런런데 왠걸? select로 시퀀스 값을 확인해 줬으니 DB상에는 시퀀스 번호가 하나씩 올라가는데 화면은 출력되지 않고 빨간 에러만 나올 뿐이다.
나는 저 에러 메세지 중 '타입'이란 단어에 집중했다.
구글신이 알려준 답은 JSTL에 대문자로 시작하면 에러가 난다고 써 있었으나 나와는 무관했다.
그래서 mapper, vo, dao, service, controller 파일의 자료형을 int로 썼다가 String으로 썼다가 난리를 쳤다.
결국 나는 시퀀스의 번호는 int도 아니고 String도 아닌가...! 하는 멍청한 궁금증에 구글링을 해보았는데 아무도 궁금해하지 않는 것을 보니 역시 멍청했다.
그러던 중 발견한 무언가!
범인은 바로 JSTL이었다.
jsp 파일에서 나는 저 값을 가져오기 위해 ${chkseq.seq }라고 써주었다.
그러나 mapper에서 하나의 값을 가져오는 것 뿐이고, resultType이 vo나 List 형식도 아니기 때문에 저렇게 꺼내올 수 없는 것이다.
resultType이 int던, String이던 하나만 꺼내 오는 것은 ${chkseq } 라고만 써 줄 것.
에이작스에서 하나의 데이터만 가져오는 것과 그냥 데이터 하나만 가져오는 것이 서로 다르고 쓰는 코드도, 방식도 다르다는 것이 너무 재밌다.
오늘도 고생했지만! 한번 해봤으니 다음에는 쉬울 것이다.
'TIL' 카테고리의 다른 글
[Node.js] Node.js란? (0) | 2021.03.01 |
---|---|
[Spring] Session ArrayList 배열 추가하기 (0) | 2021.02.28 |
[Spring] parameter 두개 이상 mapper로 넘겨주기 (0) | 2021.01.12 |
[JavaScript] append에서 onclick 변수 전달 하기 (0) | 2021.01.11 |
[JavaScript] jQuery 셀렉터 value undefined (0) | 2021.01.10 |