공부/과제

0118 deleteDev 추가

삶은고구마 2024. 1. 18. 19:37

 

 

 

간만에 하는 과제인 것 같다.

js 공부를 소홀히 해서 자꾸 뱅뱅 도는 기분.....파이널 하기전에 확실하게 복습하기로.

야매방식인 것 같은데 일단 성공했으니 기록용으로 업로드함. ㅠㅜ

 

1.기존 devUpdateForm.jsp에 삭제 버튼도 추가.

수정버튼은 submit type이고 추가된 삭제버튼은 button type이다.

 <button type="submit" class="list-group-item list-group-item-action">dev 수정</button>
        <input type="text" class="form-control" id="id" name="id" value="${dev.id}" hidden>
        <input type="text" class="form-control" id="path" name="path" value="${pageContext.request.contextPath}" hidden>
        <button type="button" id="deleteBtn" class="list-group-item list-group-item-action" >dev 삭제</button>

 

 

2.js

삭제 하기 전 confirm 창을 띄워서 정말 삭제하겠냐고 한 번 더 묻고, 

!result 즉, false(아니오,취소등 선택)면 return 시키고 

예,확인 등을 누른다면 삭제를 진행한다..

수정때 사용했던 devUpdateFrm을 이용해서 action을 바꿔주었다..

action:

<form> 태그의 action 속성은 폼 데이터(form data)를 서버로 보낼 때 해당 데이터가 도착할 URL을 명시합니다.

document.querySelector("#deleteBtn").addEventListener("click",(e)=>{
    let result = confirm('정말로 삭제하시겠습니까?');
    if (!result)
        return;
    console.log("삭제버튼클릭..gggg");
    const path = document.querySelector("#path").value;
    //form
    const frm = document.querySelector('[name="devUpdateFrm"]');
    frm.method="post";
    frm.action=path+"/dev/deleteDev.do";
    frm.submit();
});

 

3.controller

버튼 href속성을 사용하면 get 방식으로 전달되기 때문에 @PostMapping 에 접근할 수 없다.

선택한 id를 가지고 deleteDev를 진행한 후 devList로 리다이렉트한다.

 @PostMapping("/deleteDev.do")
    public String deleteDev(@RequestParam("id") Long id,Model model,RedirectAttributes redirectAttributes)
    {
        System.out.println("deleteDev로 들어왔다!@선택한 아이디:"+id);
        //1.업무 로직..
        int result = devService.deleteDev(id);
        System.out.println("delete 결과:"+result);

        //2.dml(update)후 redirect 처리
        redirectAttributes.addAttribute("msg","dev삭제에 성공했습니다.");
        return "redirect:/dev/devList.do";
    }

 

 

4. service,repository,mapper.xml

public int deleteDev(Long id) {

            return devRepository.deleteDev(id);
    }
    
-------------------------------------------------------

public int deleteDev(Long id) {
        return sqlSessionTemplate.delete("com.sh.app.dev.repository.DevRepository.deleteDev",id);
    }
  
-------------------------------------------------------

<delete id="deleteDev">
        delete
        from
            dev
        where
            id=#{id}

    </delete>

 

 

+

hidden deleteDevFrm을 만들어서 용도에 맞게 나누는게 좋을 것 같다.