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