hades

[Spring] redirect 경로 설정 시 문자 사용 주의 본문

🏃🏻‍♂️ 기본훈련/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

'🏃🏻‍♂️ 기본훈련 > Spring' 카테고리의 다른 글

[Spring] 스프링 AI  (0) 2024.08.14
[Spring] 파일 업로드  (0) 2024.08.13
[Thymeleaf] 텍스트 리터럴  (0) 2024.08.05
[Thymeleaf] 템플릿 위치  (0) 2024.07.29
[Spring] 스프링 기초 (3)  (0) 2024.07.27