공부/과제
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을 만들어서 용도에 맞게 나누는게 좋을 것 같다.