개발노트/TroubleShooting

[Spring] jqGrid 데이터 연동 시 500에러 해결 (feat. @RequestBody)

dev-mylee 2025. 1. 13. 16:17

⚠️ 오늘 발생한 문제들

1. 데이터가 안 나오고 자꾸 "게시물이 없습니다" 

뜸개발자도구 보니까 500 에러 발생

원인: 컨트롤러에서 @RequestBody 때문이었음

jqGrid는 form 데이터로 보내는데, 컨트롤러는 JSON만 받으려고 해서 충돌

// 이렇게 했다가 실패
@RequestBody BoardVO boardVO  // JSON만 받으려고 함

// 이렇게 수정하니까 됨
BoardVO boardVO  // 그냥 일반 파라미터로 받기

 

 

 

2. 데이터는 오는데 화면에 안 보임

  • 서버 로그 찍어보니 데이터는 잘 나오는데 화면에서 안 보임
  • 원인: jqGrid는 rows라는 키로 데이터를 찾는데, 서버는 list로 보내고 있었음
// 서버에서 보내는 데이터
{
    "list": [
        {
            "title": "첫번째 게시글입니다",
            "writer": "홍길동",
            ...
        }
    ]
}

// jqGrid가 원하는 데이터
{
    "rows": [ ... ],  // 여기에 데이터가 있어야 함
    "page": 1,
    "total": 5,
    "records": 50
}

 

 

3. 날짜 포맷 수정

  • 날짜가 이상하게 출력됨
  • colModel에 formatter 추가해서 해결
{
    name: 'regDate', 
    formatter: function(cellvalue) {
        if(!cellvalue) return '';
        var date = new Date(cellvalue);
        return date.getFullYear() + "-" + 
               String(date.getMonth() + 1).padStart(2, '0') + "-" + 
               String(date.getDate()).padStart(2, '0') + " " +
               String(date.getHours()).padStart(2, '0') + ":" +
               String(date.getMinutes()).padStart(2, '0') + ":" +
               String(date.getSeconds()).padStart(2, '0');
    }
}

 

 

 

✅ 메모

  1. jqGrid 쓸 때는 컨트롤러에서 @RequestBody 쓰지 말기
  2. 컨트롤러에서 데이터 보낼 때 rows 키로 변환해서 보내기
  3. 날짜 포맷은 colModel의 formatter로 처리하기