티스토리 뷰
이번 프로젝트에서 목록의 체크박스를 선택해서 삭제하는 기능을 구현하게 되었다. 기존 코드에 있던 대로 선택된 체크박스들을 ","로 연결해서 문자열로 가져오고 서버단에서 "," 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
'공부흔적 > 스프링' 카테고리의 다른 글
Transaction 관련 내부 코드 뜯어보기 (0) | 2022.08.02 |
---|---|
중첩된 @Transactional을 실험해보자 (0) | 2022.07.27 |
파라미터 유효성 체크를 편하게 해보자 (0) | 2022.06.27 |
DispatcherServlet 뜯어보기 (0) | 2022.03.20 |
Spring mvc interceptor (0) | 2021.05.18 |