project/team project

[DAL] 체크박스에 데이터 값 넣기

박허디 2024. 2. 3. 18:25

 

이 화면에서 체크박스를 표시한 게시글만 삭제하기 버튼을 클릭하면 지워지게 하고 싶었다

    <!-- 내 게시글 삭제 -->
    <update id="deleteBoard" parameterType="kr.co.Dal.my.model.MyBoardVO">
        UPDATE
            bard_tb
        SET
            bard_stts = 0
        WHERE
            bard_id = #{bard_id}
        AND
            bard_type = #{bard_type}
    </update>

 

xml이 위와 같이 있어서 내가 체크박스를 눌렀을 때 가져와야 되는 정보는 bard_id와 bard_type의 정보가 필요했다

 

우선

리스트 전체기능을 불러올 때 bard_id와 bard_type을 이미 html로 한꺼번에 Model을 써서 가져왔기 때문에

체크박스 안에 타임리프 문법을 이용해서 bard_id와 bard_type을 넣어줬다.

 

<tbody th:each="board : ${boardList}">
    <tr>
        <td><input type="checkbox" th:data-bardid="${board.bard_id}" th:data-bardtype="${board.bard_type}" class="checkboxes"></td>
        <td th:text="${board.bard_id}"></td>
        <td th:text="${board.bard_type}"></td>
        <td th:text="${board.bard_tit}"></td>
        <td th:text="${board.bard_rdate}"></td>
        <td th:text="${board.bard_cnt}"></td>
    </tr>
</tbody>

 

 

Ajax를 통해서 삭제를 해줄 거 기 때문에 jsondata에 bard_id와 bard_type을 에 넣어주려 했는데 

체크박스를 클릭했을 때 체크박스가 체크되어 있는 글의 bard_id와 bard_type을 가져와야 되기 때문에 js에서 배열을 이용해서 뽑아줬다.

let bardidArray = [];                  // 체크박스에 대한 bardid
let bardtypeArray = [];                // 체크박스에 대한 bardtype


    // 현재 체크박스의 속성 값을 배열에 추가
    bardidArray = [];
    bardtypeArray = [];
    checkboxes.forEach(function(checkbox){
        if (checkbox.checked) {
            bardidArray.push(checkbox.getAttribute('data-bardid'));
            bardtypeArray.push(checkbox.getAttribute('data-bardtype'));

            console.log("bardidArray", bardidArray);
            console.log("bardtypeArray", bardtypeArray);
        }
    });


    let jsonData = {
        bardidArray: bardidArray,
        bardtypeArray: bardtypeArray
    }

    ajaxAPI("/my/MyBoard/deleteBoard", jsonData, "POST").then(response => {
        confirm("정말 삭제 하시겠습니까?");
        window.location.href = '/my/MyBoard';
    })
}

 

이렇게 jsondata를 가져온 후 서비스에서 bard_id와 bard_type을 for문을 이용해 뽑아주고 데이터 형식을 바꿔주었다.

   /* 게시글 삭제 */
    public void deleteBoard(MyBoardVO myBoardVO){

        log.warn("bard length: " + myBoardVO.getBardidArray().length);
        log.warn("type length: " + myBoardVO.getBardtypeArray().length);

        for (int i = 0; i < myBoardVO.getBardidArray().length; i++) {
            log.warn("bardId: " + myBoardVO.getBardidArray()[i]);
            log.warn("type: " + myBoardVO.getBardtypeArray()[i]);

            int bardId = Integer.parseInt(myBoardVO.getBardidArray()[i]);
            int bardType = Integer.parseInt(myBoardVO.getBardtypeArray()[i]);

            myBoardVO.setBard_id(bardId);
            myBoardVO.setBard_type(bardType);

            myBoardMapper.deleteBoard(myBoardVO);
        }


    }