[ Spring-Boot, JPA로 질문답변 게시판 구현 과정 ] -  import.sql에 대해서 질문드립니다.

2017-06-02 20:53

답변부분에 소스코드를 작성하다가 적용이 되버렸네요... 죄송합니다.

{{#answers}}
                   <article class="article" id="answer-1405">
                          <div class="article-header">
                              <div class="article-header-thumb">
                                  <img src="https://graph.facebook.com/v2.3/1324855987/picture" class="article-author-thumb" alt="">
                              </div>
                              <div class="article-header-text">
                                  <a href="/users/1/자바지기" class="article-author-name">{{writer.userId}}</a>
                                  <a href="#answer-1434" class="article-header-time" title="퍼머링크">
                                      {{formattedCreateDate}}
                                  </a>
                              </div>
                          </div>
                          <div class="article-doc comment-doc">
                   <p>{{contents}}</p>
                          </div>
                          <div class="article-util">
                              <ul class="article-util-list">
                                  <li>
                                      <a class="link-modify-article" href="/questions/413/answers/1405/form">수정</a>
                                  </li>
                                  <li>
                                      <form class="delete-answer-form" action="/questions/413/answers/1405" method="POST">
                                          <input type="hidden" name="_method" value="delete">
                                          <button type="submit" class="delete-answer-button">삭제</button>
                                      </form>
                                  </li>
                              </ul>
                          </div>
                      </article>
              {{/answers}}

전체적인 소스를 올리면 페이지에 적용이되서 delete부분만 올리겠습니다.

그전글은 수정이 안되서...지워주시면 될 것 같습니다.

BEST 의견 원본위치로↓
2017-06-04 15:45

감사합니다. 잘해결 되었습니다.

강의만 보고 잘 따라하는것만이 제대로된 공부법은 아닌거라고 생각합니다. 삽질도 해보고 그로인하여 문서도 찾아보고

생각도 해보는 좋은 계기가 되었다고 생각합니다.

비록 스스로 해결하지 못했지만 해결을 위해 생각을하고 어떠한점이 부족한지 일찍 알게되어서 다행이라고 생각합니다.

좋은 강의를 만들어 주셔서 감사합니다.

좋은 하루 되세요 :)

6개의 의견 from SLiPP

2017-06-03 16:28

이 글에 첨부한 소스 코드는 답변을 삭제하는 곳의 소스 코드인데요. 공유한 소스 코드를 보면 질문 삭제 기능에 대한 Controller만 구현되어 있고, 답변 삭제를 위한 Controller 기능은 구현되어 있지 않네요.

질문을 삭제하려는 것인지, 답변을 삭제하려는 것인지 확인해 보심 원인을 찾을 수 있을 것 같네요.

2017-06-03 18:23

제가 잘못된 생각을 했을지는 모르겠지만 질문한 id와 로그인한 id가 동일할 때는 삭제가 되지만 로그인을 하지 않았을때, 다른 id로 로그인을 하였을 때는 405가 발생합니다. 위에 소스코드는 답변에 대한 소스코드로 잘못 올렸지만 답글의 삭제 action과 질문한 글의 action이 다릅니다.

질문한 글의 action이 /questions/{{id}}로 넘겨주어 delete를 받아주어야 하고

답글 부분에 action은 /questions/413/answers/1405로 넘겨주어 404가 발생합니다.

@DeleteMapping("/{id}")
public String delete(@PathVariable Long id, HttpSession session) {
    if (!HttpSessionUtils.isLoginUser(session))
    {
       return "/users/loginForm";
    }
    User loginUser = HttpSessionUtils.getUserFromSession(session);
    Question question = questionRepository.findOne(id);
    if (!question.isSameWriter(loginUser)) 
    {
       return "/users/loginForm";
    }
    questionRepository.delete(id);
    return "redirect:/";
}

} delete 맵핑에 대한 소스인데 delete를 컨트롤러에서 받았을때 if의 두가지 조건을 만족하지 않을때 즉 id값이 같을때는 정상적으로 동작을하고 if문의 하나라도 만족을 못하였을시는 정상적으로 동작을 하지 않는걸로 보입니다. if구문의 어느 부분이 잘못 되었는지 잘 모르겠습니다.

제가 생각한 동작 과정에 대한 생각이 잘못된점이나 부족한점이 있다면 지적해주시면 감사하겠습니다.

2017-06-04 06:54

제 동영상 코드에 문제가 있었네요. 많은 시간 삽질하게 해서 미안합니다.

해결 방법은 2가지 입니다. if 문은 정상적으로 잘 구현했고요. return 값을 "redirect:/users/loginForm"으로 변경하거나 "/user/login"로 수정하면 해결할 수 있습니다.

왜 이와 같이 수정하면 정상적으로 동작하는지 이해해야 합니다. 즉, redirect가 있는 경우와 없는 경우를 명확히 이해해야 Controller 구현을 제대로 이해한 것입니다.

그리고 디버깅하는 방법을 익히면 좋겠네요. 소스 코드의 각 라인에 System.out.println()과 같은 구현을 두어 어느 라인에서 에러가 발생하는지 확인하세요. 또는 Eclipse 디버거 사용법 문서나 Using the Eclipse Debugger 동영상을 참고해 디버깅 기능을 활용해 볼 것을 추천합니다.

2017-06-04 15:45

감사합니다. 잘해결 되었습니다.

강의만 보고 잘 따라하는것만이 제대로된 공부법은 아닌거라고 생각합니다. 삽질도 해보고 그로인하여 문서도 찾아보고

생각도 해보는 좋은 계기가 되었다고 생각합니다.

비록 스스로 해결하지 못했지만 해결을 위해 생각을하고 어떠한점이 부족한지 일찍 알게되어서 다행이라고 생각합니다.

좋은 강의를 만들어 주셔서 감사합니다.

좋은 하루 되세요 :)

의견 추가하기

연관태그

← 목록으로