삭제 요청을 어떻게 보낼까?
- POST "/study/{path}/events/{id}/delete"
- DELETE "/study/{path}/events/{id}"
DELETE를 쓰려면
- HTML의 FORM은 method로 GET과 POST만 지원한다. DELETE는 지원하지 않는다.
- https://www.w3.org/TR/html4/interact/forms.html#h-17.3
- 그래도 굳이 쓰고 싶다면?
application-properties
# HTML <FORM>에서 th:method에서 PUT 또는 DELETE를 사용해서 보내는 _method를 사용해서
@PutMapping과 @DeleteMapping으로 요청을 맵핑.
spring.mvc.hiddenmethod.filter.enabled=true
타임리프 th:method
<form th:action="@{'/study/' + ${study.path} + '/events' + ${event.id}}" th:method="delete">
<button class="btn btn-primary" type="submit" aria-describedby="submitHelp">확인</button>
</form>
모임 취소 요청을 처리할 핸들러 생성
package me.weekbelt.studyolle.event;
@Controller
@RequestMapping("/study/{path}")
@RequiredArgsConstructor
public class EventController {
// ........
@DeleteMapping("/events/{id}")
public String cancelEvent(@CurrentAccount Account account, @PathVariable String path,
@PathVariable Long id) {
Study study = studyService.getStudyToUpdateStatus(account, path);
eventService.deleteEvent(eventService.findEventById(id));
return "redirect:/study/" + study.getEncodedPath() + "/events";
}
}
모임 취소를 처리하는 메소드 생성
package me.weekbelt.studyolle.event;
@Service
@Transactional
@RequiredArgsConstructor
public class EventService {
// .......
public void deleteEvent(Event event) {
eventRepository.delete(event);
}
}
참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#
'스프링과 JPA 기반 웹 어플리케이션 개발 > 5부 모임' 카테고리의 다른 글
68. 모임 참가 신청 수락 및 출석 체크 (0) | 2020.05.06 |
---|---|
67. 모임 참가 신청 및 취소 (0) | 2020.05.06 |
65. 모임 수정 (0) | 2020.05.04 |
64. 모임 목록 조회 (0) | 2020.05.04 |
63. 모임 조회 (0) | 2020.05.04 |