개발/스프링(Spring)

(스프링) 게시판 전체 선택 후 삭제 (이전 페이지로 이동)

kakk789 2022. 8. 17. 19:59
ex ) 6페이지에 Record가 하나 존재하는데 해당 Record를 삭제하게 될 경우 5페이지로 이동하게 끔 하기 위한 코드

그림1

  • 5페이지에서 게시글 전체 선택 후 삭제 하면 5페이지로 이동

2. 5페이지로 성공적으로 이동 화면

Java 코드

  • 전체 레코드(totalRecord)
  • 한 페이지에 뿌려줄 pageSIZE (임의이지만 5개로 고정)
  • 위에 두 조건이 딱 나누어 떨어질 경우(% 모드 연산)
        ( == 해당 페이지에 레코드가 모두 삭제되어 없다는 의미)
    @RequestMapping(value="/deleteList", method= RequestMethod.POST)
    @ResponseBody
    public int deleteList(RedirectAttributes redirectAttributes , HttpServletRequest request){
        String[] chkVal = request.getParameterValues("chkVal");
        int returnValue=0;
        for (String b: chkVal) {
            personHistoryServImplNew.deleteUserInfo(Integer.parseInt(b));
        }
        totalRecord = personHistoryServImplNew.userListNewCount(unlockedReqMap); //전체 레코드 개수

        //리턴 받은 data(pageNUM)에 따라 새로고침
        //만약 6페이지에 리스트가 1개밖에 없었는데 1개를 삭제하면
        //5페이지로 이동되게 함
        if (pageNUM !=1 && totalRecord % pageSIZE==0){
            redirectAttributes.addFlashAttribute("pageNUM", pageNUM-1);
            System.out.println("thisOK pageNUM-1  "+ (pageNUM-1));
            returnValue = pageNUM-1;
        }
        else{
            redirectAttributes.addFlashAttribute("pageNUM", pageNUM);
            System.out.println("thatOK pageNUM  "+ pageNUM);
            returnValue = pageNUM;
        }
        return returnValue;
    }

Ajax

  • core 부분은 Ajax success시 전달받은 pageNUM으로 href 이동
  • idx는 해당 체크박스의 속성 값으로 idx가 들어가 있는 상태
$(document).on("click", "#deleteListBtnNew", function(){
    let chkVal=[];
    $(".checkSingle:checked").each(function(){
        chkVal.push($(this).attr('idx'))
    })
    $.ajax({
        url:"/deleteList",
        type:'post',
        traditional: true,
        data:{"chkVal": chkVal},
        success:function(data){
            //리턴 받은 data(pageNUM)에 따라 새로고침
            //만약 6페이지에 리스트가 1개밖에 없었는데 1개를 삭제하면
            //5페이지로 이동되게 함
            location.href=("/practiceList?pageNUM="+data) ;
        },
        error:function(request,status,error){
            alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
        },
        complete:function(){

        }
    })
})
반응형