다음으로 컨트롤러를 구현하였습니다.
/memos : 메모 리스트 보여주는 곳
/memo : 새로운 메모 생성하는 곳
/memo/{id} : 특정 메모 상세 보기
/memo/{id}/edit : 메모 편집 하는 곳
/memo/{id}/remove : 메모 삭제하는 곳
그루비 부분은 끝났습니다. html, yml등은 '간단한 메모장 구현하기'에서 코드가 중복 되어서 생략하였습니다.
@Controller
@RequiredArgsConstructor
public class MemoController {
private final MemoService memoService;
@GetMapping("/memos")
public String memoList(Model model, HttpServletRequest httpServletRequest) {
String search = httpServletRequest.getParameter("search");
List<Memo> memos = memoService.findSearch(search);
model.addAttribute("searchParam", !(search == null || search.isBlank()));
model.addAttribute("search", search);
model.addAttribute("memos", memos);
return "memo_list";
}
//메모 생성 요청
@GetMapping("/memo")
public String createForm() {
return "new_memo";
}
//메모 생성
@PostMapping("/memo")
public String createMemo(Memo memo, RedirectAttributes redirectAttributes) {
Long id = memoService.save(memo);
redirectAttributes.addAttribute("id", id);
redirectAttributes.addAttribute("create", true); //생성했을때 메세지
return "redirect:/memo/{id}";
}
//상세 로직
@GetMapping("/memo/{id}")
public String memo(@PathVariable Long id, Model model) {
Memo memo = memoService.findOne(id);
model.addAttribute("id", id);
model.addAttribute("memo", memo);
return "item/memo";
}
//수정 화면
@GetMapping("/memo/{id}/edit")
public String editFrom(@PathVariable Long id, Model model) {
Memo memo = memoService.findOne(id);
model.addAttribute("id", id);
model.addAttribute("memo", memo);
return "edit_memo";
}
//수정 로직
@PostMapping("/memo/{id}/edit")
public String edit(@PathVariable Long id, MemoDTO memoDTO) {
memoService.update(id, memoDTO.title(), memoDTO.content());
return "redirect:/memo/{id}";
}
//삭제 로직
@PostMapping("/memo/{id}/remove")
public String remove(@PathVariable Long id) {
memoService.remove(id);
return "redirect:/memos";
}
}