DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
수정 기능 구현할 때 컨트롤러에서 mapping 방식을 post에서 put으로 바꿨더니 이런 에러가 생겼다.
post는 생성, put은 수정할 때 쓰인다고 한다.
post는 멱등성이 없어서 같은 값을 여러 번 보내면 해당 값이 수정되는 것이 아니다.
새롭게 추가되어 여러 개가 생긴다 ..
🍯 해결
spring.mvc.hiddenmethod.filter.enabled=true
이 코드를 application.properties에 추가해줌
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
return new HiddenHttpMethodFilter();
}
위 코드를 SpringBootApplication단에 추가하라는 말이 많았지만, 추가 안해도 잘 작동함.
참고로 추가해도 안 된다는 글들이 있었다
컨트롤러에서 put, delete로 매핑할 때 html에서
- form 태그의 method="post"
- form 태그 안에
<input type="hidden" name="_method" value="put"/>
추가. delete는 value로 "delete"가 들어가면 됨.
✨ delete 요청을 보내는 삭제 버튼 예시
<form th:method="delete" th:action="@{'/post/delete/' + ${post.id}}">
<input type="hidden" name="_method" value="delete">
<button type="submit" class="btn btn-primary" th:if="${#strings.equals(post.author, username)}" onclick="deletePost();">삭제</button>
</form>
👇 참고
https://m.blog.naver.com/hyoun1202/222058520474
반응형