다음으로 컨트롤러를 구현하였습니다.
/memos : 메모 리스트 보여주는 곳
/memo : 새로운 메모 생성하는 곳
/memo/{id} : 특정 메모 상세 보기
/memo/{id}/edit : 메모 편집 하는 곳
/memo/{id}/remove : 메모 삭제하는 곳
그루비 부분은 끝났습니다. html, yml등은 '간단한 메모장 구현하기'에서 코드가 중복 되어서 생략하였습니다.
@Controller
class MemoController {
@Autowired
private MemoService memoService
@GetMapping("/memos")
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")
String createFrom() {
return "/new_memo"
}
@PostMapping("/memo")
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}")
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")
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")
String edit(@PathVariable Long id, MemoDTO memoDTO) {
memoService.update id, memoDTO.title, memoDTO.content
return "redirect:/memo/{id}"
}
@PostMapping("/memo/{id}/remove")
String remove(@PathVariable Long id) {
memoService.remove id
return "redirect:/memos"
}
}