[Spring Boot] TO-DO List 만들기 - 아이템 추가하기 편

aylee·2022년 6월 23일
2

SpringBoot-ToDoList

목록 보기
2/4
post-thumbnail

🌱 포스트 순서 🌱

  1. 아이템 등록하기

https://wikidocs.net/book/7601 의 내용을 응용하였습니다.


[1] 아이템 등록하기

내가 생각하는 건 저번에 만든 템플릿 위에 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) 이제 테스트



잘 작동하는 것 같다!

profile
미래를 구체화 하는 중

0개의 댓글