리뷰 백업

류한선·2024년 3월 7일

2차 프로젝트

목록 보기
7/32
<form th:action="@{|/review/create/${book.id}|}" method="post">
                        <textarea name="content" id="content" rows="15"></textarea>
                        <input type="submit" value="리뷰등록">
                    </form>
                    <div>
                        <ul>
                            <li th:if="${not #lists.isEmpty(book.reviewList)}" th:each="review : ${book.reviewList}" th:text="${review.content}"></li>
                            <li th:if="${#lists.isEmpty(book.reviewList)}">리뷰가 없습니다.</li>
                        </ul>

                    </div>
                    <a th:href="@{|/review/delete/${book.id}|}"
                       class="delete btn btn-sm btn-outline-secondary"
                       th:text="삭제">
                    </a>```
코드를 입력하세요

private final BookService bookService;

@PreAuthorize("isAuthenticated()")
@PostMapping("/create/{id}")
public String reviewCreate(@PathVariable("id") Integer id, @Valid ReviewForm reviewForm,
                           BindingResult bindingResult, Principal principal, org.springframework.ui.Model model){
    Book books = this.bookService.getBookById(id);
    if (books == null) {
        // 책이 존재하지 않는 경우에 대한 처리
        return "redirect:/books/list"; // 예시로 책 목록 페이지로 리다이렉트
    }
    if (bindingResult.hasErrors()) {
        model.addAttribute("books",books);
        return "book_detail";
    }

    Member author =  this.memberService.findByUsername(principal.getName());
    if (author == null) {
        // 작성자를 찾을 수 없는 경우에 대한 처리
        return "redirect:/book/list"; // 예시로 홈 페이지로 리다이렉트
    }
    this.reviewService.create(books,reviewForm.getContent(), author);

    return String.format("redirect:/book/detail/%d", id);
}
@GetMapping("/modify/{id}")
public String reviewModify(@PathVariable("id") Integer id, Model model){
    Book book = this.bookService.getBookById(id);
    model.addAttribute("book",book);
    return "review_modify_form";
}
@PostMapping("/modify")
public String reviewModify(@Valid ReviewForm reviewForm, BindingResult bindingResult, Principal principal){

    if (bindingResult.hasErrors()) {
        return "book_detail";
    }
    Book book = this.bookService.getBookById(reviewForm.getBookId());

    this.reviewService.modify(book, reviewForm.getContent());
    return String.format("redirect:/book/detail/%d", reviewForm.getBookId());
}
@GetMapping("/delete/{id}")
public String reviewDelete(Principal principal, @PathVariable("id") Integer id) {
    Review review = this.reviewService.getReview(id);

    this.reviewService.delete(review);

    return "redirect:/book/list";
}
private final BookRepository bookRepository;

public Review getReview(Integer id) {
    Optional<Review> review = this.reviewRepository.findById(id);
    if (review.isEmpty()) {
        return null;
    }
    return review.get();
}

public void create(Book book, String content, Member author) {
    Review review = Review.builder()
            .book(book)
            .content(content)
            .author(author)
            .build();
    reviewRepository.save(review);
}
public void modify(Book book, String content){

    Review reviewModify = Review.builder()
            .content(content)
            .build();
    reviewRepository.save(reviewModify);

}

public void delete(Review review) {
    reviewRepository.delete(review);
}


class="book_middle-section" ----세로로 빨간줄  길어서 끝없이 내려감

style="margin-bottom:5px" ----아무것도 없음
class="book_bottom-section"-----파란줄 세로 길지만 도중에 끊김
class="card-body btn btn-light"----회색으로 표시
class="book_top-section"-----가로로 정렬

.a_re-comment {
margin-top: 30px; margin-bottom: 30px;
padding-top: 10px; padding-bottom: 10px;
box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25);
width: 100%;
}

a_re-comment_top
.a_re-comment_top {
display: flex;
flex-wrap: wrap;
justify-content:space-between;
}
comment-time
.comment-time {
text-decoration: none;
margin-right: auto;
padding-top: 3px;
padding-bottom: 5px;
padding-left: 10px;
font-size: 14px;
color: #969696;
}

.a_re-comment_part { width: 30%; text-align: right; }

0개의 댓글