[스프링 부트 입문 14] 수정 폼 만들기
-----------------------
하다가
index.mustache 만들고 프로그램 재시작 하면 자꾸 아래와 같은 오류가 뜹니다
서버 두개가 돌아가는 것도 아닌데 그러는데 무엇이 문제 인가요?
Execution failed for task ':FirstprojectApplication.main()'.
> Process 'command '/Library/Java/JavaVirtualMachines/jdk-18.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
////제가 따라 만든 index.mustache 복사해서 아래에 넣었습니다. ///
{{>layouts/header}}
<form class="container" action="" method="post">
<div class="mb-3">
<label class="form-label">제목</label>
<input type="text" class="form-control" name="title">
</div>
<div class="mb-3">
<label class="form-label">내용</label>
<textarea class="form-control"rows="3" name="content"></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<a href="/articles/{{article.id}}">Back</a>
</form>
{{>layouts/footer}}
/////혹시 몰라 ArticleController도 올려봅니다 이거랑 index 만들기 전까지 만든것들 실행 할 때는 다 잘 되었습니다///
package com.example.firstproject.controller;
import com.example.firstproject.dto.ArticleForm;
import com.example.firstproject.entity.Article;
import com.example.firstproject.repository.ArticleRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@Controller
@Slf4j //로깅을 위한 골뱅이(어노테이션)
public class ArticleController {
@Autowired //스프링 부트가 미리 생성해놓은 객체를 가져다가 자동 연결!
private ArticleRepository articleRepository;
@GetMapping("/articles/new")
public String newArticleForm(){
return "articles/new";
}
@PostMapping("/articles/create")
public String createArticle(ArticleForm form) {
log.info(form.toString());
// System.put.println(form.toString()); -> 로깅기능으로 대체!
//1.Dto를 변환! Entity!
Article article = form.toEntity();
log.info(article.toString());
// System.out.println(article.toString());
//2.Repository에게 Entity를 DB안에 저장하게 함!
Article saved = articleRepository.save(article);
log.info(saved.toString());
// System.out.println(saved.toString());
return "redirect:/articles/" + saved.getId();
}
@GetMapping("/articles/{id}")
public String show(@PathVariable Long id, Model model) {
log.info("id = " + id);
// 1: id로 데이터를 가져옴!
Article articeEntity = articleRepository.findById(id).orElse(null);
// 2: 가져온 데이터를 모델에 등록!
model.addAttribute("article", articeEntity);
// 3: 보여줄 페이지를 설정!
return "articles/show";
}
@GetMapping("/articles")
public String index(Model model) {
// 1: 모든 Article을 가져온다!
List<Article> articleEntityList = articleRepository.findAll();
// 2: 가져온 Article 묶음을 뷰로 전달!
model.addAttribute("articleList", articleEntityList);
// 3: 뷰 페이지를 설정!
return "articles/index"; // articles/index.mustache
}
@GetMapping("/articles/{article.id}/edit")
public String edit(@PathVariable Long id, Model model) {
// 수정할 데이터를 가져오기!
Article articleEntity = articleRepository.findById(id).orElse(null);
// 모델에 데이터를 등록!
model.addAttribute("article", articleEntity);
// 뷰 페이지 설정
return "articles/edit";
}
}
sehongpark님의 답변
## edit.mustache 파일을
지우면 정상 동작하는지부터 확인해야할 듯 합니다.
문제가 생기지 않는 지점을 먼저 확인하시고,
어느 코드가 추가되었을 때
어느 에러가 발생하는지를 찾아보세요
PS.
한번에 코드를 다 넣기 보다는
조금씩 작성 및 실행하면서
어느 부분의 코드에 문제가 있는지를 확인하면 좋습니다