다음으로 한 일은 그리드다. 회사에서 엑티브 위젯인가 뭔가 하는 제품 라이선스를 샀지만 난 그냥 제이쿼리 grid를 쓰고 싶어졌다. 그래서 찾아봤더니 JqGrid가 아주 쓸만해 보였다. 애초에 서버쪽이랑 연동 되도록 만들어져있었다. 가끔 잡습 그리드들을 보면 서버랑은 전혀 별개로 페이지 기능을 제공하는 것들이 있는데... 대체 그게 무슨 소용인가 싶다. 화면에 다 보여줄 것도 아니면서 뭐하러 미리 100개를 화면으로 가져온다음에 그걸 또 페이징 해서 보여줄까? 차라리 100개를 다 보여주고 말지.. 그래서 사실상 클라이언트단 페이징은 거의 쓸모가 없고 클아이언트용 페이지는 무조건 한페이지고 서버단과 연동하여 페이징할 네비게이션 바를 별도로 구현해야하는 피곤함이 뒤따른다. 그런데 JqGrid는 그러지 않았다. 서버단과 연동하여 페이징을 하기 때문에 네비게이션바도 별도로 구현할 필요가 없었고, 그리드 상에서 편집, 트리형 그리드 등 고급 기능도 잘 지원해주고 있었다.

http://www.trirand.com/blog/
역시 예제 먼저 확인했다.
http://trirand.com/blog/jqgrid/jqgrid.html
맘에 든다. 적용하려는데 레이아웃 플러그인처럼 간단하진 않았다.
1. jquery-ui theme와 밀접한 관계가 있는 플러그인이라 테마 롤러를 사용해서 원하는 테마를 설치했다.
2. json 배열을 어떻게 다루는지 자세히 알아봤다.
 jsonReader 옵셥을 사용하면 스프링 3.0 컨텐츠 네고 기능을 사용하기 좋았다. 그렇지 않고 @ResponseBody를 사용해서 JSON만 뿌려주게 하면 인코딩 문제도 생기도 JSON 전용 핸들러가 되버리니까 좀 별로였다. 그냥Model을 사용해서 화면에 전달할 객체를 넣어주고 json 형태를 원한다고 요청하면 컨텐츠 네고를 타고서 결국 Model에 들어있는 객체들을 json으로 변환해준다. 만약 브라우저 주소창에 Ajax로 보낸 요청과 같은 URL을 입력했다면 난 .jsp 페이지를 볼 수 있었을 것이다. 그런게 컨텐츠 네고 뷰 리졸버다. 암튼 지간에.. 여기서 인코딩과 JSON 다루는 방법을 학습하느라 시간좀 뺏겼다. 그래도 결국 해냈다.

여기서 다듬기 작업 중에 몇가지 못한걸 적어둔다.
- 레이아웃 크기 변경시 그리드 사이즈 자동 조정: 레이아웃 콜백 옵션이 잘 동작하지 않았다. 버그 같은데; 버전 업을 기다려봐야겠다.
- 그리드 세로 크기도 가로 크기처럼 자동으로 꽉 채워주는 옵션이 있으면 좋겠는데 없었다. 현재는 그리드 내용에 따라서 세로 크기가 자동으로 변하게 해뒀는데 머.. 이것도 나쁘지 않았다.