[iBatis] form 태그 안의 정보가 json으로 전달되지 않는 경우

Sun·2023년 8월 29일
0
post-thumbnail

들어가며

요즘 손대고 있는 프로젝트의 DB인터페이스는 iBatis를 사용한다.

MyBatis가 아니라 iBatis다.

이번에 새로운 기능을 하나 만들려고 하다가 데이터 전달이 안되는 상황에 직면하였다.
반나절을 삽질하다가 의외로 간단하게 해결하였다.

상황

설명을 위하여 컨트롤러나 서비스, vo 등은 생략하였다.

form 태그를 serialize하여 json형식으로 만들어서 전달하고 input의 값을 xml로 보내서 동적 sql로 사용할 수 있게 설계하였다.
그런데 계속해서 전달하려는 input의 value가 null인 것이었다.

| 해결

  1. getter&setter 확인
    XML에서 resultClass는 기존 만들어져있는 VO로 지정되어 있었다.
    따라서 VO에 해당 파라미터에 대한 getter&setter가 있는지 확인했다.
    -> 이미 필자가 만들어놓았음.

  2. 쿼리 호출 메소드의 조건 확인
    service, serviceimpl, dao에 작성된 쿼리 호출 메소드를 확인했으나 메소드 조건도 틀리지 않았다.

  3. input태그 의 name 설정
    기존 input에는 id만 있었다.

<input id="test" value="${test}">

이게 문제였다.
form을 json으로 만드느라 serialize() 하였는데, 이 과정에서 Key:value 형태로 만들어진다. 이때 key 를 name의 값을 사용한다.
따라서 name 값이 없던 내 input의 value는 null 일 수 밖에 없었던 것..

| 마무리

너무나도 단순하게 해결되었다. 정말 별의별 방법을 다 해봤는데 고작 name 값이 없어서라니...
오류가 날 때는 당황하지 말고 천천히 기초부터 확인을 좀 해봐야겠다.

profile
좋은 코드를 위해 고민합니다.

0개의 댓글