
상품 수정 페이지를 만들기 위해 컨트롤러에서 경로 설정 후 실행 시 이상한 경로로 가는 문제가 있었다.
@GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "basic/editForm";
}
상품 상세에서 상품 수정을 누르면 위의 코드처럼 컨트롤러가 해당 페이지로 연결해주는 코드로 짰다.
하지만 상품 수정을 누르면
http://127.0.0.1:8080/basic/items/@%7B/basic/items/%7BitemId%7D/edit(itemId=$%7Bitem.id%7D)%7D
라는 원치 않았던 경로로 들어갔다.
문제의 원인
타임리프의 리터럴대치를 사용하지 않아 경로가 이상하게 잡힘
th:onclick="location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'"
문제 원인인 코드
위의 코드를 인텔리제이에서 보면 빨간 줄이 뜨면서 문제가 있다고 뜬다.
위의 코드를
th:onclick="|location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'|"
리터럴대치로 변경해주면 된다.
느낀점
1. 리터럴 대치가 진짜 편리한데 뭔가 까먹지 않고 써야한다.
2. 링크에 문제가 있으면
1. 컨트롤러를 확인하고,
2. HTML을 확인하되 컨트롤러와 연결이된 HTML 보다는 해당 폼으로 연결 시켜주는 HTML의 버튼 같은 이동 요소를 먼저 확인하자.
3. 생각보다 인텔리제이는 더 똑똑한 것 같다.
'이전 학습 내용' 카테고리의 다른 글
| 스트림 학습 1 (0) | 2023.01.12 |
|---|---|
| SQL 작성 시 띄어쓰기 문제를 조심하자. (0) | 2022.12.27 |
| 재귀 알고리즘의 분석 (0) | 2022.12.23 |
| java 이진 검색 알고리즘 (0) | 2022.12.13 |
| 솟수 구하기 풀어보기 (0) | 2022.12.08 |