수정 버튼 클릭시 해당 사용자에 대한 정보를 그대로 가지고오고 내용을 수정하고 저장하면 전 내용은 삭제되고 새로운 내용으로 변경된다.
본인이 작성한 글에서만 수정/삭제 권한이 있고 작성자가 아니라면 조회만 가능하다.
✂️수정 전
✂️수정 후
✂️작성자 본인일 경우
✂️작성자 본인이 아닐 경우
1. 수정 데이터 불러오기
2. 수정하기
- 작성자 o ➡️ 수정/삭제
- 작성자 x ➡️ 조회
<form action="${contextPath}/board/modify" method="post">
<div class="num-writer">
<label>글번호</label>
<input class="form-control" name="reviewNum" value="${detailReview.reviewNum }" readonly>
<label>작성자</label>
<input class="form-control" name="writer" value="${detailReview.writer }" readonly>
</div>
<div class="title-content">
<label>제목</label> <input type="text" name="title" value="${detailReview.title }">
<label>내용</label>
<textarea id="" name="content" cols="30" rows="10">${detailReview.content }</textarea>
</div>
<button type="button" id="List-btn" onClick="location.href='${contextPath}/board/review'">목록</button>
<c:if test="${successLoginUser == detailReview.writer }">
<input type="submit" id="modify_btn" value="수정">
<input type="submit" id="delete_btn" value="삭제">
</c:if>
</form>
글 번호와 작성자, 제목, 내용 모두 dto에서 해당 사용자 정보를 가져오고 제목과 내용만 수정할 수 있다.
c:if
문을 사용해 로그인 세션과 작성자가 같다면 수정/삭제 버튼이 보이고 해당 작성자가 아니라면 목록 버튼만 보이게한다.
@GetMapping("modify_form")
public String modify_form(@RequestParam int reviewNum, Model model) {
bs.getuserData(reviewNum, model);
return "board/modify_form";
}
수정페이지를 연결하면서 글번호를 불러오고 service로 보낸다.
public void getuserData(int reviewNum, Model model);
public void getuserData(int reviewNum, Model model) {
model.addAttribute("detailReview", mapper.reviewDetail(reviewNum) );
}
💡수정할 데이터를 불러와야 하기 때문에 우선 service까지만 코드를 작성한다.❗
@PostMapping("modify")
public String modify(boardDTO dto, RedirectAttributes rs){
bs.modify(dto);
rs.addFlashAttribute("result","modify success");
return "redirect:review";
}
수정하기 jsp에서 modify를 연결하고 데이터를 받는다.
바든 데이터는 service로 보내고 성공/실패 메시지를 한번만 출력하고 게시판 목록페이지로 이동한다.
public int modify(boardDTO dto);
public int modify(boardDTO dto) {
return mapper.modify(dto);
}
public int modify(boardDTO dto);
<update id="modify">
update box_board set title=#{title},
content=#{content}
where list_num=#{reviewNum}
</update>
기존 데이터가 삭제되고 새로운 데이터로 수정되기 때문에 update
를 사용해서 쿼리문을 작성한다.
글 번호 기준으로 제목과 내용을 업데이터한다.