java
[Spring] redirect
처누
2024. 1. 21. 17:39
게시글 수정하기 기능 구현 중 다음과 같은 오류가 발생했다.
글 수정 후에 URL이 바뀌지 않았을 뿐더러 게시글 리스트에 수정한 게시글도 보이지 않았다.
@PostMapping("/board/edit/{id}")
public String edit(@PathVariable Long id, BoardForm form) {
Board board = boardService.findByOne(id).get();
board.setTitle(form.getTitle());
board.setContent(form.getContent());
boardService.edit(board);
return "/board/showBoardList";
}
위 코드에서 '/board/showBoardList'를 반환하는데 이 부분이 문제였다.
GET과 POST는 명확하게 역할이 정해져있다. GET은 리소스 요청, POST는 리소스를 생성하는 역할이 있다. 하지만 위 코드에선 POST가 리소스 생성과 요청을 동시에 하고 있다. 따라서 URL이 바뀌자 않고, 게시글 리스트도 제대로 조회되지 않은 것이다.(URL이 바뀌지 않는 것까진 이해했는데 왜 게시글 리스트도 안보이는지는 모르겠음... 번호/제목은 왜 뜨는거고...)
따라서 클라이언트한테 리다이렉트할 주소를 알려주고(redirect:/board/list) 이를 GET요청(/board/list)을 다시 보내게 해야한다.
@PostMapping("/board/edit/{id}")
public String edit(@PathVariable Long id, BoardForm form) {
Board board = boardService.findByOne(id).get();
board.setTitle(form.getTitle());
board.setContent(form.getContent());
boardService.edit(board);
return "redirect:/board/list";
}