🧑🏻💻 오늘은 글을 삭제하고 수정하는 서비스를 만들어보자. 일단 글 삭제 버튼을 만들어보자!

boardview 파일을 열어 line 31 에 해당 내용을 추가하자. #는 자기 자신을 반환한다는 의미로 클릭하면 해당페이지로 다시 돌아오게 된다.

그리고 위와 같이 BoardService 에 삭제 메소드인 boardDelete 를 추가하자.

Controller 로 돌아와 /board/delete 주소를 매핑해주자. return 값에 들어있는 redirect:/board/list는 삭제 후 해당 주소로 다시 돌아가는 것을 의미한다.

위처럼 id 에 5를 넣어주고 삭제해보자. 그럼 5번 게시물이 삭제되어있을 것이다.

리스트에서 5번 게시물이 사라졌다!!! 이제 아까 만든 Delete 버튼을 눌렀을 때 삭제되게 해보자.
아까 만든 Delete 버튼 테그를 다음과 같이 수정해준다. 여기서 조금 더 생각해보면 /board/delete?id=5 로 이동하면 5번게시물이 삭제되었다. 이것을 Delete 버튼을 누르면 해당 주소로 이동할 수 있도록(삭제할 수 있도록) 해준 것이다.

이제 아무 게시물이나 들어가 Delete 버튼을 눌러보자. 삭제가 될 것이다 !!!
💻 이제 수정 기능을 추가해주자. 우리가 삭제 기능을 추가한 것과 비슷한 구조로 작업해보자. 먼저 boardview 에서 modify 버튼을 추가해주고 그 버튼을 눌렀을 때 게시물 작성 창으로 돌아가 수정을 완료한 후 다시 그 게시물이 원본 게시물에 업데이트 되어야할 것이다. 이 구조를 생각하며 한번 따라가보자.

Modify버튼을 누르면 그 게시물을 수정하게 된다. 그러면 그 게시물의 작성 폼으로 되돌아가야하는데 그 때 해당 게시물을 식별할 수 있는Key값인id를 넘겨주게 된다. 일종의식별자라고 생각하면 된다.

Controller 로 돌아가 해당 주소를 매핑해주자. 여기서 @PathVariable 이라는 키워드가 등장하는데, 매핑된 주소의 {id} 를 가져와 Integer id 에 대입해주는 역할을 한다.
그리고 boardmodify html 파일을 하나 생성해주고 일단 boardwrite 파일을 복사해 일단 붙여넣어준다. 
그리고 실행한 후 아무 게시물에 들어가 Modify 버튼을 눌러주면

위와 같이 boardmodify 가 업로드 되는 것을 볼 수 있다. 이제 수정된 게시물을 원본 페이지에 업로드 해주자.

boardmodfiy html 파일의 form 부분을 다음과 같이 수정해주자.

위 방식이 잘 이해가 안 갈 수 있지만, 쉬운 예를 들어 설명하면 서로 값을 바꿔주는 아래 메커니즘과 비슷하다.

다시 게시물을 수정해보자. 정상적으로 수정될 것이다.


😄 수정이 잘 된 것을 볼 수 있다. 부가적으로 몇가지 기능을 추가해보자.
🧑🏻💻 예를 들어 5번 게시물을 삭제하면 목차에서는 6번 게시물이 5번 게시물로, 나머지 게시물의 목차도 한칸씩 올라가야한다. 하지만 우리가 만든 list 페이지는 board.id 로 목차를 구성하기 때문에 6번 게시물이 5번째 순서가 되어도 목차는 여전히 6으로 리스트 된다.
👉 처음 들었던 생각은 한 게시물이 삭제될 때마다 그 아래의 게시물들의 id 값을 하나씩 올려주는 방식이었다. 하지만 key 값은 board 를 구분하는 유일한 key 값이라 이를 수정하는 것은 옳지 않다. 따라서 게시물들의 id 와 상관없이 게시물들의 갯수에 따라 목차의 값을 할당해주는 것이 바람직하다. 한번 따라해보자.

boardlist 의 <tbody> 부분을 다음과 같이 수정하자. 방금 설명한 방식을 적용한 것이다. 더이상 목차 부분을 board.id 로 할당하지 않고 thymeleaf 의 메소드인 #lists.size() 를 사용해 게시물의 수를 구하고 게시물의 번호를 매핑하는 방식이다.

이렇게 테스트용 게시물을 몇 개 생성하고 중간에 있는 게시물을 삭제해 보면,

👍 목차가 잘 업데이트되는 것을 볼 수 있다!!!
😼 게시물을 작성하거나 수정했을때 작은 알람창을 띄워주는 기능을 추가해보자.
먼저 templates 하위에 message html 파일을 만들어주고 다음과 같이 작성하자.

그리고 다시 Controller 로 돌아와 아래와 같이 수정해주자. 전달할 메시지 와 알람을 띄워주고 이동할 url을 넘겨줄 것이다.

한 번 게시물을 작성해보자. 그럼 다음과 같은 알람이 뜰 것이다.

Controller 에서 boardUpdate 부분을 다음과 같이 수정하면 끝이다. 
😼 이제 거의 다 왔다. 다음 챕터에서는 파일 추가 기능과 페이징 처리를 해보겠다!!!