@DeleteMapping
HTML 폼은 기본적으로 'GET'과 'POST' 메소드만 직접 지원합니다. 그렇기 때문에, 'DELETE' 메소드를 사용하기 위해서는 몇 가지 우회 방법을 사용해야 합니다. Thymeleaf와 Spring을 사용할 때, _method 오버라이드를 사용하여 DELETE 요청을 시뮬레이션할 수 있습니다. 이 방법은 HTML 폼에서 POST 메소드를 사용하지만, 요청이 컨트롤러에 도달할 때 DELETE로 해석되도록 합니다.
<form th:action="@{/item/{id}(id=${item.id})}" method="post">
<input type="hidden" name="_method" value="delete" />
<input type="submit" value="Delete"/>
</form>
@Controller
public class ItemController {
@DeleteMapping("/item/{id}")
public String deleteItem(@PathVariable("id") Long id) {
itemService.delete(id); // id에 해당하는 항목을 삭제하는 서비스 메소드
return "redirect:/items"; // 삭제 후 리다이렉트될 경로
}
}
`Request method 'POST' not supported` 오류 메시지 해결방법
클라이언트는 DELETE 메소드를 사용하여 요청을 보내려고 했으나 실제로는 POST 메소드로 요청이 전송된 것으로 보입니다.
HiddenHttpMethodFilter 활성화 확인: _method 오버라이드 기능을 사용하는 경우, Spring에서 HiddenHttpMethodFilter가 활성화되어 있어야 합니다. Spring Boot를 사용하는 경우, 이 필터는 기본적으로 활성화되어 있습니다. 하지만 명시적으로 비활성화한 경우 또는 Spring Boot를 사용하지 않는 경우, 필터를 수동으로 등록해야 할 수 있습니다
1. application.properties 또는 application.yml 설정 확인
# application.properties
spring.mvc.hiddenmethod.filter.enabled=true
또는
# application.yml
spring:
mvc:
hiddenmethod:
filter:
enabled: false
2. 수동으로 HiddenHttpMethodFilter 등록
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.HiddenHttpMethodFilter;
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean<HiddenHttpMethodFilter> hiddenHttpMethodFilter() {
FilterRegistrationBean<HiddenHttpMethodFilter> filterRegistrationBean = new FilterRegistrationBean<>(new HiddenHttpMethodFilter());
filterRegistrationBean.addUrlPatterns("/*"); // 모든 경로에 대해 적용
return filterRegistrationBean;
}
}
반응형
'Java > Spring' 카테고리의 다른 글
[Spring]Jpa를 이용하여 검색기능 사용하기(pageable 사용) (0) | 2024.04.08 |
---|---|
[Spring]@PageableDefault (페이징 처리) (0) | 2024.04.08 |
[Spring]Model 객체와 @ModelAttribute (0) | 2024.04.02 |
[Spring]MariaDB 연동 (0) | 2024.03.28 |
[Spring]AOP (0) | 2024.03.28 |