개발새발 블로그

[스프링부트3 자바 백엔드 개발 입문] 6장 - 게시판 페이지 내 이동하기 본문

백/spring

[스프링부트3 자바 백엔드 개발 입문] 6장 - 게시판 페이지 내 이동하기

복지희 2024. 1. 21. 19:12
<a href="/articles/new">New Article</a>

5장 기존에 작성했던 모든 목록을 보여주는 articles 페이지에 새 글을 작성할 수 있는 articles/new 링크를 추가한다.

<a href="/articles">Back</a>

마찬가지로 articles/new 페이지에서도 목록을 볼 수 있는 articles 링크를 추가한다.

 

여기서 아까 만들었던 Back 버튼을 누르면 정상 실행이 되고,

추가로 Submit 버튼을 눌렀을 때도 목록 링크가 뜨면 좋겠지만, 지금은 WhiteLabel 오류가 뜬다.

이때 사용하는 개념이 리다이렉트다.

 

@PostMapping("/articles/create")
public String createArticle(ArticleForm form) {
    Article article = form.toEntity();
    Article saved = articleRepository.save(article);
    
    return "";
}

이전에 작성했던 PostMapping 이다.

dto로 받은 form을 엔티티로 바꾸고, 리포지터리에 저장하는 코드다.

지금은 리턴값이 없다. 리다이렉트를 여기에 정의한다.

return "redirect:주소";

 

그런데, id가 1번이면 articles/1 을 재요청하라고 지시하고 싶다.

현재는 저장한 엔티티의 id값을 알 수 있는 방법이 없으니까, getter setter를 만들어서 id값을 가져올 수 있도록 한다.

 

public Long getId(){
    return id;
}

메소드 혹은,

롬복으로 @Getter을 추가해주는 방법도 있다.

 

@PostMapping("/articles/create")
public String createArticle(ArticleForm form) {
    Article article = form.toEntity();
    Article saved = articleRepository.save(article);
    return "redirect:/articles/" + saved.getId();
}

리다이렉트를 포함한 코드이다.

 

 


<td><a href="articles/{{id}}">{{title}}</a></td>

추가로, 만약 제목을 누르면 해당 id값의 내용만 보고싶다면, mustache에서 변수 사용하듯이 똑같이 링크를 써주면 된다.