th:action="@{/admin/pages/add}" : 태그의 action 속성 값
form 태그에 th:href 를 썼다가
Request method 'POST' not supported 에러 뜸.
수정버튼을 눌렀을때
<tr th:each="page : ${pages}">
<td><a th:href="@{'/admin/pages/edit/' + ${page.id}}">수정</a></td></tr>
id만으로 수정 전 값을 보여줄수있다?
[edit.html]
히든으로 id와 sorting 값도 추가한다. (DB에서 못가져오니까)
id와 sorting은 수정하지 않지만 수정시 필요한 값들
<input type="hidden" th:field="*{id}">
<inputtype="hidden" th:field="*{sorting}">
※ 이걸 쓰지 않으면 수정이 아니라 새로운 페이지가 만들어진다.
☆ th:field를 쓰면 id,name,value값까지 자동입력
@PostMapping("/add")와 비슷하다.
@PostMapping("/edit")
public String edit(@Valid Page page, BindingResult bindingResult, RedirectAttributes attr) {
//에러 있으면 다시 에러페이지로
if(bindingResult.hasErrors()) {
return "admin/pages/edit";
}
attr.addFlashAttribute("message", "페이지 수정되었습니다.");
attr.addFlashAttribute("alertClass", "alert-success");
//슬러그가 없으면 제목을 소문자로,공백은 "-"로 대체 : 있으면 슬러그를 소문자로,공백을 "-"로 대체
String slug = (page.getSlug() == "") ? page.getTitle().toLowerCase().replace(" ", "-")
: page.getSlug().toLowerCase().replace(" ", "-");
Page sulgExist = pageRepo.findBySlugAndIdNot(slug,page.getId()); //슬러그를 수정안할때를 대비해 같은 슬러그라고 에러 안뜨도록 id도 추가해서 구분하기
//슬러그를 찾는데 id 로 찾은건 아님!
if(sulgExist != null) {
attr.addFlashAttribute("message", "이미 같은 슬러그가 존재합니다.");
attr.addFlashAttribute("alertClass", "alert-danger");
attr.addFlashAttribute("page", page); //또안됨 안지워지고 다시 불러오는 @@안됨 get매핑에서 @ModelAttribute써야 나옴??
}else {
page.setSlug(slug); //수정된 슬러그 저장
//page.setSorting(100); // 기본 0으로 저장이 됨 수정할땐 필요없음
pageRepo.save(page);
}
return "redirect:/admin/pages/edit/" + page.getId(); //post-redirect-get
}
findBySlugAndIdNot 가 내가 지은 메소드 이름이 아니고 원래 있는 이름.. ? = where slug = 슬러그 and id != 아이디
(slug,page.getId()) 두 변수를 왜 쓰느냐?
1. slug를 수정 안해도 id로 구분한다!
2. slug를 찾는데 현재id를 제외하고 다른 id로 있는 동일한 slug가 있는지 찾는다!
Page sulgExist = pageRepo.findBySlugAndIdNot(slug,page.getId());
findBySlugAndIdNot 메소드 이름안에 And, Not 키워드로 메소드이름을 읽어야함
JPA 메소드 이름 안에서 지원되는 키워드
반응형
LIST
'Spring boot | 쇼핑몰 만들기 | 어글리 마켓 > 홈페이지 만들기 | 고객,관리자' 카테고리의 다른 글
마우스로 순서 정렬 | Sorting 테이블 행 (0) | 2022.05.01 |
---|---|
페이지 삭제하기 (0) | 2022.05.01 |
에러나서 문자 그대로 불러올때 @ModelAttribute 와 Model 객체 차이 (0) | 2022.04.30 |
페이지 추가 (0) | 2022.04.30 |
페이지 만들기 (0) | 2022.04.30 |