https://wikidocs.net/book/7601 의 내용을 응용하였습니다.
내가 생각하는 건 저번에 만든 템플릿 위에 input 박스를 넣는 것이다.
그리고 그 input 박스에 할 일을 적으면 바로 아래에 적용된 것이 보이도록 하는 것!
(1) todolist.html 수정하기
form 태그, post Method를 사용해서 로직으로 데이터를 보내줄 것이다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>To Do List</title>
</head>
<body>
<h1>투두리스트</h1>
<form th:action="@{/todo/create}" method="post">
<input name="content" placeholder="오늘의 할 일을 적어보세요!"/>
<button>작성</button>
</form>
<table>
<thead>
<tr>
<th>번호</th>
<th>할 일</th>
<th>수행 여부</th>
</tr>
</thead>
<tbody>
<tr th:each="todoentity : ${toDoEntityList}">
<td th:text="${todoentity.id}"></td>
<td th:text="${todoentity.content}"></td>
<td th:text="${todoentity.completed}"></td>
</tr>
</tbody>
</table>
</body>
</html>
(2) Controller 수정하기
post method로 들어오니까 @PostMapping 을 사용한다.
package com.mysite.todo;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@RequiredArgsConstructor
@Controller
public class ToDoController {
private final ToDoService toDoService;
@RequestMapping("/todo")
public String list(Model model){
List<ToDoEntity> toDoEntityList = this.toDoService.getList();
model.addAttribute("toDoEntityList",toDoEntityList);
return "todolist";
}
@RequestMapping("/")
public String root(){
return "redirect:/todo";
}
// url 설정은 /todo/create
@PostMapping("/todo/create")
public String todoCreate(@RequestParam String content){
//Todo : 아이템 삽입
// 다시 원래 화면으로 리다이렉트
return "redirect:/todo";
}
}
Todo : 아이템 삽입 부분을 만족시키려면 Service의 로직을 수정해야한다.
(3) Service
아이템을 새로 만들고 데이터베이스에 넣을 수 있도록 설정해준다.
package com.mysite.todo;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@RequiredArgsConstructor
@Service
public class ToDoService {
private final ToDoRepository toDoRepository;
public List<ToDoEntity> getList(){
return this.toDoRepository.findAll();
}
public void create(String content){
ToDoEntity toDoEntity = new ToDoEntity();
toDoEntity.setContent(content);
toDoEntity.setCompleted(false);
this.toDoRepository.save(toDoEntity);
}
}
(4) 다시 Controller
// Todo 부분을 지우고 해당 코드로 채워넣는다.
@PostMapping("/todo/create")
public String todoCreate(@RequestParam String content){
this.toDoService.create(content);
return "redirect:/todo";
}
(5) 이제 테스트
잘 작동하는 것 같다!