Question์ Answer์ ์์ ์ผ์ ์ถ๊ฐ
private LocalDateTime modifyDate;// ์์ ์ผ์
DBํ์ธํ๊ธฐ

question_detail.html ์ถ๊ฐ
<div class="my-3">
<a th:href="@{|/question/modify/${question.id}|}" class="btn btn-sm btn-outline-secondary"
sec:authorize="isAuthenticated()"
th:if="${question.author != null and #authentication.getPrincipal().getUsername() == question.author.username}"
th:text="์์ "></a>
</div>

์ธ์ฆ๋ ์ฌ๋๋ง ๋ณผ ์ ์๊ณ , ๊ธ์ด์ด๊ฐ ํ์ฌ ๋ก๊ทธ์ธ ์ค ์ธ user์ ๊ฐ์ ๋
ํ ์คํธํ๊ธฐ


์์ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ธ

QuestionController
//์ง๋ฌธ ์์ ํ๊ธฐ
@PreAuthorize("isAuthenticated()")//์ธ์ฆ๋ ์ฌ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
@GetMapping("/modify/{id}")
public String questionModify(QuestionForm questionForm,
@PathVariable("id") int id, Principal principal,Model model) {
Question question = qService.getQuestion(id);
if(!question.getAuthor().getUsername().equals(principal.getName())) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"์์ ๊ถํ์ด ์์ต๋๋ค.");
}
//์์ ์ ํ์ด์ง์ ์์ ๋ด์ฉ ์ ๋ฌ
questionForm.setSubject(question.getSubject());
questionForm.setContent(question.getContent());
model.addAttribute("modify", true);
return "question_form";
}

question_form.html
<div class="container my-3">
<h5 th:if="${modify!=true}" class="border-bottom pb-2">์ง๋ฌธ๋ฑ๋ก</h5>
<h5 th:if="${modify==true}" class="border-bottom pb-2">์ง๋ฌธ์์ </h5>
<form th:object="${questionForm}" method="post">
<input
type="hidden"
th:name="${_csrf.parameterName}"
th:value="${_csrf.token}"
/>
<div th:replace="layout::formErrors"></div>
<div class="mb-3">
<label for="subject" class="form-label" s>์ ๋ชฉ</label>
<input type="text" th:field="*{subject}" class="form-control" />
</div>
<div class="mb-3">
<label for="content" class="form-label">๋ด์ฉ</label>
<textarea
th:field="*{content}"
class="form-control"
rows="10"
></textarea>
</div>
<input type="submit" value="์ ์ฅํ๊ธฐ" class="btn btn-primary my-2" />
</form>
</div>
์์ ํ์ด์ง๋ ๋ฑ๋กํ์ด์ง๋ ๊ฐ์ด ์ฌ์ฉํ๊ณ ์ถ์๋ฐ,
action์ด ์ง์ ๋์ด์์ผ๋ฉด ์๋๋ค.
์ฃผ์๊ฐ ์์ ๊ฒฝ์ฐ์๋ ์ง๊ธ ํ์ฌ ์ฃผ์์์ post๋ก ๊ฐ๋ค.
๋์
th:action์ ์ญ์ ํ๊ฒ๋๋ฉด csrf ํ ํฐ์ ์๋์์ฑ์ ํด์ฃผ์ง ์๊ธฐ ๋๋ฌธ์
์๋์ผ๋ก ์์ฑํด์ผํจ


QuestionService
//์ง๋ฌธ ์์ ์ฒ๋ฆฌ
public void modify(Question question, String subject, String content) {
question.setSubject(subject);
question.setContent(content);
question.setModifyDate(LocalDateTime.now());
this.qRepo.save(question);
}
QuestionController
//์ง๋ฌธ ์์ ์ฒ๋ฆฌ
@PreAuthorize("isAuthenticated()")
@PostMapping("/modify/{id}")
public String questionModify(@Valid QuestionForm questionForm, BindingResult result, Principal principal, @PathVariable("id") int id) {
if(result.hasErrors()) {
return "question_form";
}
Question question = qService.getQuestion(id);
if(!question.getAuthor().getUsername().equals(principal.getName())) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,"์์ ๊ถํ์ด ์์ต๋๋ค.");
}
//DB์ ์ง๋ฌธ ์์
qService.modify(question, questionForm.getSubject() ,questionForm.getContent());
return String.format("redirect:/question/detail/%s", id);
}
Question_form์
์ง๋ฌธ๋ฑ๋ก๊ณผ, ์ง๋ฌธ์์ ๋ ๊ฐ๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ค
๊ทธ๋์ if๋ฌธ์ ์ฌ์ฉํ์ฌ modify ๋ผ๋ฉด ์ง๋ฌธ์์ ์ผ๋ก ์ถ๋ ฅ๋๊ฒํ๊ณ ์๋๋ฉด ์ง๋ฌธ๋ฑ๋ก์ผ๋ก ์ถ๋ ฅ๋๊ฒํ๋ค.




'BACKEND > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ต๋ณ ์์ (0) | 2023.11.13 |
|---|---|
| ์ง๋ฌธ ์ญ์ ์ฒ๋ฆฌ (0) | 2023.11.10 |
| ์ํฐํฐ ๋ณ๊ฒฝ ๊ธ์ด์ด ์ถ๊ฐ ๋ฐ ๊ธ ๋ชฉ๋ก,์์ธ๋ณด๊ธฐ,๋ต๋ณ์ ๋ฐ์ํ๊ธฐ (0) | 2023.11.10 |
| ๋ก๊ทธ์์ ์ฒ๋ฆฌ (0) | 2023.11.10 |
| ๋ก๊ทธ์ธ ๊ตฌํ (0) | 2023.11.10 |