๐Ÿ”ฅ #14 ๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ

myeonjiยท2022๋…„ 2์›” 22์ผ
0

๊ธ€ ์‚ญ์ œ๋Š” javascript๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด๋‹ค.
์ƒ์„ธํŽ˜์ด์ง€์—์„œ ์‚ญ์ œ ๋ฒ„ํŠผ์— id๋ฅผ ๋„ฃ๊ณ , board.js ๊ฐ€ ์ž‘๋™ํ•œ๋‹ค.

1. < detail.jsp >

.
.
.
<button id="btn-delete" class="btn btn-danger">์‚ญ์ œ</button>
.
.
.
<script src="/js/board.js"></script>
<%@ include file="../layout/footer.jsp"%>

์—ฌ๊ธฐ์„œ ๊ธ€์„ ์“ด ์œ ์ €(๋ณธ์ธ)๋งŒ ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ์œ ์ €๊ฐ€ ๊ธ€์„ ์‚ญ์ œํ•˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ

<c:if test="${board.user.id == principal.user.id}">
        <button id="btn-delete" class="btn btn-danger">์‚ญ์ œ</button>
    </c:if>

์œ„์ฒ˜๋Ÿผ if๋ฌธ์„ ๊ฑธ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

2. < board.js >

let index = {
    init: function () {
      .
      .
      .
        $("#btn-delete").on("click", ()=>{
            this.deleteById();
        });
    },
  .
  .
  .
    deleteById: function () {
        var id = $("#id").text();

        $.ajax({
            type: "DELETE",
            url: "/api/board/"+id,
            dataType: "json"
        }).done(function (resp) {
            // ๊ฒฐ๊ณผ๊ฐ€ ์ •์ƒ์ด๋ฉด done ์‹คํ–‰
            alert("๊ธ€์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
            location.href = "/";
        }).fail(function (error) {
            // ์‹คํŒจํ•˜๋ฉด fail ์‹คํ–‰
            alert("๊ธ€์‚ญ์ œ๋ฅผ ์‹คํŒจํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
            alert(JSON.stringify(error));
        });
    },
}


index.init();

detail.jsp์—์„œ ์‚ญ์ œ ๋ฒ„ํŠผ์— ๋„ฃ์–ด์ค€ id="btn-delete"๋กœ ํ•จ์ˆ˜๋ฅผ ์ž‘๋™์‹œํ‚จ๋‹ค.
์—ฌ๊ธฐ์„œ var id = $("#id").text(); ๋Š” id๋ฅผ value๋กœ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ text๋กœ ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— .text()๋ฅผ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค.

์‚ญ์ œ ์ด๋ฏ€๋กœ type="DELETE" ์ด๋‹ค!!

3. < BoardApiController >

	@DeleteMapping("/api/board/{id}")
    public ResponseDto<Integer> deleteById(@PathVariable int id) {
        boardService.๊ธ€์‚ญ์ œํ•˜๊ธฐ(id);
        return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
    }

@DeleteMapping์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•˜๊ณ , boardService์˜ ๊ธ€์‚ญ์ œํ•˜๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

4. < BoardService >

    @Transactional
    public void ๊ธ€์‚ญ์ œํ•˜๊ธฐ(int id) {
        System.out.println("๊ธ€์‚ญ์ œํ•˜๊ธฐ : "+id);
        boardRepository.deleteById(id);
    }

์—ฌ๊ธฐ์— ํŠธ๋žœ์žญ์…˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฑธ์–ด์•ผ ํ•œ๋‹ค.
C, U, D ๊ธฐ๋Šฅ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ฆ‰, ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ์ปค๋ฐ‹๋˜๊ณ  ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋˜์–ด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ์‹ค์ œ DB๋กœ flush ๋œ๋‹ค.
์—ฌ๊ธฐ ์ฐธ๊ณ 

profile
๐Ÿ“š

0๊ฐœ์˜ ๋Œ“๊ธ€