모임 수정

Yuri Lee·2020년 12월 1일
0

모임 수정 뷰

event/update-form.html이 event/form.html 과 유사해서 fragments로 빼냈음!

  • edit mode
  • new mode
    에 따라 다르게 보이도록 함

모임 tab

  • 새 모임 만들기 버튼 클릭 시
<form class="needs-validation col-sm-10" 
      action="/study/algorithm/new-event/" method="post" novalidate="">
  <input type="hidden" name="_csrf" value="c00a3a8d-e0aa-4f37-824b-e6cddbec3a0b">

action="/study/algorithm/new-event/"

  • 모임 리스트 -> 모임 자세히 보기 -> 모임 수정하기 버튼 클릭 시
<form class="needs-validation col-sm-10" 
      action="/study/algorithm/events/100/edit" method="post" novalidate="">
  <input type="hidden" name="_csrf" value="c00a3a8d-e0aa-4f37-824b-e6cddbec3a0b">

action="/study/algorithm/events/100/edit", 모집 방법 form 은 숨김

fragments.html

		<div class="form-group" th:if="${mode == 'new'}">
				<label for="eventType">모집 방법</label>

mode == 'new' 일때만 모집 방법이 보이도록 함. 하지만 view에서 컨트롤 하는 것은 얼마든지 뚫고 값을 넣어줄 수 있다. 그럼 실제로 서버가 받아온다. EventForm이 받을 수 있기 때문!

EventController.java

	@PostMapping("/events/{id}/edit")
	public String updateEventSubmit(@CurrentAccount Account account, @PathVariable String path,
									@PathVariable Long id, @Valid EventForm eventForm, Errors errors,
									Model model) {
		Study study = studyService.getStudyToUpdate(account, path);
		Event event = eventRepository.findById(id).orElseThrow();
		eventForm.setEventType(event.getEventType());
		eventValidator.validateUpdateForm(eventForm, event, errors);

		if (errors.hasErrors()) {
			model.addAttribute(account);
			model.addAttribute(study);
			model.addAttribute(event);
			return "event/update-form";
		}

		eventService.updateEvent(event, eventForm);
		return "redirect:/study/" + study.getEncodedPath() +  "/events/" + event.getId();
	}

eventForm.setEventType(event.getEventType()); 을 통해서 해당 문제 해결, eventForm 에 들어온 eventType은 기존에 있던 event의 eventType으로 다시 덮어준다.

모임 수정 로직

  • 모집 방법은 수정할 수 없다. (관리자/선착순)
  • 모집 인원은 확정된 참가 신청 수 보다는 커야 한다. 예) 5명의 참가 신청을 확정 상태로
    변경했다면, 모임을 수정할 때 모집 인원 수가 5보다는 커야 한다. 3으로 줄이면 안된다.
  • 최대한 모임 개설하기 화면의 코드를 재사용한다.
  • 모집 인원을 늘린 선착순 모임의 경우에, 자동으로 추가 인원의 참가 신청을 확정 상태로
    변경해야 한다. (나중에 할 일)

출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발

profile
Step by step goes a long way ✨

0개의 댓글