티스토리 뷰

공부흔적/스프링

체크박스 객체로 받기

주디 𝙹𝚞𝚍𝚢 2021. 9. 28. 21:35

 이번 프로젝트에서 목록의 체크박스를 선택해서 삭제하는 기능을 구현하게 되었다. 기존 코드에 있던 대로 선택된 체크박스들을 ","로 연결해서 문자열로 가져오고 서버단에서 "," split해주었는데, 오늘 코드리뷰 중에 좀 더 간단하게 구현할 수 있는 방법이 있지 않겠냐는 대리님의 말씀이 있어서 한 번 찾아보았고, 훨씬 간결하게 구현할 수 있는 방법이 생겨서 포스팅해둔다.


Front에서의 처리

<input type="checkbox" name="checkRow" id="checkRow" value="${item.seq}">

 사실 <c:forEach></c:forEach>가 있어야겠지만 우선은 생략. 그리고 [선택삭제] 버튼을 누르면 ajax가 작동하도록 했는데, 이때 보내는 데이터를 아래처럼 만들었다.

data    : jQuery("input[name='checkRow']:checked").serialize(),

Back에서의 처리

 저렇게 ajax에서 데이터를 보내게 되면 checkRow=1&checkRow=2&checkRow=3... 와 같은 형식이 된다. 이제 이 데이터를 컨트롤러에서 받아줘야 하는데, 객체로 받을 경우 아래와 같은 객체가 필요하다.

public class CheckBox {
	
    private List<Integer> checkRow;
    
    public List<Integer> getCheckRow() {
        return checkRow;
    }

	public void setCheckRow(List<Integer> checkRow) { // setter 꼭 있어야 함!
        this.checkRow = checkRow;
    }

}

그리고 컨트롤러에서는 위 객체를 이용해서 받아주면 된다.

public boolean delete(CheckBox checkBox) {

 코드를 이렇게 수정하고 나니 체크박스를 String으로 받아와서 시퀀스번호 쪼개고 또 시퀀스번호만 모아놓은 리스트를 만들 필요없이 그냥 for문으로 시퀀스 번호에 따라 DB에서 데이터만 가져오면 되니 간결해졌다.

300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함