AnswerForm생성
package com.mysite.sbb.answer;
import javax.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AnswerForm {
@NotBlank(message = "내용은 필수 항목입니다.")
private String content;
}
AnswerController
//답변 저장
@PostMapping("/create/{id}") //주소에 있는 변수 { }안에 넣기
public String createAnswer(Model model, @PathVariable("id") Integer id,
@Valid AnswerForm answerForm, BindingResult result) {
Question question = this.qService.getQuestion(id);
if(result.hasErrors()) {
model.addAttribute("question", question);
return "question_detail";
}
//답변 저장
aService.create(question, answerForm.getContent());
return String.format("redirect:/question/detail/%s", id);//질문 상세보기 페이지로 리다이렉트
}
***** @valid 의 위치는 검사할 항목 앞에 붙여준다. 아니면 검사안함!!!!!
question_detail.html
<form
th:action="@{|/answer/create/${question.id}|}"
th:object="${answerForm}"
method="post"
class="my-3"
>
<div
class="alert alert-danger"
role="alert"
th:if="${#fields.hasAnyErrors()}"
>
<div th:each="err : ${#fields.allErrors()}" th:text="${err}" />
</div>
<textarea
th:field="*{content}"
rows="10"
class="form-control"
></textarea>
<input type="submit" value="답변등록" class="btn btn-primary my-2" />
</form>
QuestionController - detail수정-
//상세보기 페이지
@GetMapping("/detail/{id}")
public String detail(Model model ,@PathVariable("id") int id,
AnswerForm answerForm) {
Question question = qService.getQuestion(id);
model.addAttribute("question", question);
return "question_detail";
}
'BACKEND > SpringBoot' 카테고리의 다른 글
페이징 (0) | 2023.11.09 |
---|---|
에러 창 , 네브바 모듈화 (1) | 2023.11.09 |
질문 등록 처리 및 유효성검사 (5) | 2023.11.09 |
부분 모듈화 ( th:fragment / th:replace ) (0) | 2023.11.09 |
질문 목록/상세보기 - 부트스트랩 적용 (0) | 2023.11.09 |