🏃🏻♂️ 기본훈련/Spring
[Spring] redirect 경로 설정 시 문자 사용 주의
hades1
2024. 8. 12. 20:17
🚨 에러
Model has no value for key foodId
🔍 분석
@PostMapping("post/delete/{id}")
public String deletePost(@PathVariable(name = "id") Long id, RedirectAttributes redirectAttributes){
Post post = postService.findPost(id);
Long foodId = post.getFood().getId();
postService.remove(id);
return "redirect:/food/foodInfo/{foodId}"
}
id로 post를 찾고, post와 연결된 foodId를 찾아 redirect 경로 안에 넣어주었다.
@GetMapping("/food/foodInfo/{foodId}")
public String foodInfo(@PathVariable Long foodId, Model model) {
Food food = foodRepository.findOne(foodId);
model.addAttribute("food", food);
return "food/foodinfo";
}
전달받은 foodId로 food를 찾아서 model에 넣어 템플릿에서 이용하고 싶었는데, 위의 에러가 발생하였다.
분명, foodId를 전달해주었고, 혹시 전달이 안되었나 싶어서 foodInfo에서 출력도 해보았지만 문제는 없었다.
구글링하던 도중, redirect 경로에 {}을 넣게 되면, foodId를 키로 인식하여 Model has no value for key foodId 에러가 발생했던 것이었다.
간단하게 +로 연결하여 해결할 수 있었다.
👊 해결
@PostMapping("post/delete/{id}")
public String deletePost(@PathVariable(name = "id") Long id, RedirectAttributes redirectAttributes){
Post post = postService.findPost(id);
Long foodId = post.getFood().getId();
postService.remove(id);
return "redirect:/food/foodInfo/" + foodId;
}
📖 레퍼런스
https://birdspring.com/model-has-no-value-for-key-aaa/
Model has no value for key ‘aaa’ 라고 출력됐다
Model has no value for key 라는 오류 메시지를 처음 보고 관련된 부분들을 찾아보았습니다.
birdspring.com