스프링부트 기초 - 4. 게시판 수정,삭제
이전글
https://goodthinking.tistory.com/43
이전글에서 CRUD 에서 Create , Read 를 구현했습니다.
수정 Update
먼저 수정하는 페이지를 만들어야겠죠..
resouces >templates >articles >edit.mustache 를 생성하겠습니다
코드로 첨부하니 전부 검정색으로 출력되서 그냥 제코드를 캡처하는 것으로 대체합니다 쉬운코드니까요..
일단 전체적인 폼은 게시글생성 페이지, write.mustache 를 그대로가져와서 사용했습니다.
다만 제목과 내용 input, textarea 에는 기존의 글을 가져오고 수정해야합니다.
그래서 form 상단에 {{#article}} {{/article}} 로 감싸고, 그 안에 {{title}}, {{content}} 를 넣어 정보를 가져왔습니다.
그리고 컨트롤러에서 기존의 상세페이지에서 수정버튼을 누를 때
a 태그로 버튼을 만들고 href 링크를 통해 id값을 edit 주소로 전달했습니다.
그걸 컨트롤러에서 받아와
{id} 주소로 받고 @PathVariable 어노테이션으로 변수로 받아와 Long 자료형의 id 로 받았습니다.
그리고 해당게시글의 가져온 내용을 수정페이지에 뿌립니다.
수정된 내용을 다시 저장해야하므로 내용을 다시 Repository 에 save 함수를 통해 저장합니다.
그리고 그 결과를 redirect 로 상세페이지로 돌려보냅니다.
그러면 articles/{{id}} 주소로 다시 재호출되며 수정 후 게시글 상세페이지로 복귀하게 되는거죠.
삭제 Delete
삭제같은 경우 버튼을 눌러 해당 클래스를 호출하게 되면 따로 조작할 페이지 없이 바로 삭제가 가능합니다.
컨트롤러를 통해 바로 삭제해보겠습니다.
PathVariable 어노테이션으로 id값을 가져오고 이를 Repository 에서 delete 함수를 통해 삭제합니다.
근데 여기서 RedirectAttributes 라는 생소할 수 있는 코드를 보실 수 있는데
이는 addFlashAttribute 를 이용하기 위함이며 addFlashAttribute 는 간단하게 말하면 1회성 안내메세지를 전달하는 코드입니다.
아무 안내메세지 없이 삭제가 된다면 직관적인 확인이 어려울 수 있겠죠. 그래서 넣어봤습니다.
이렇게 컨트롤러와 수정,삭제 버튼의 호출로 CRUD 기능을 구현해 보았습니다.