개발일기/프로젝트 일기
HealthDuo - RedirectAttributes
존태
2022. 6. 21. 01:44
@PostMapping("/bbsSave")
public String BbsSave(Bbs bbs,
@RequestParam("street") String street,
@SessionAttribute(name = "memberId", required = false)
String loginMember) {
log.info("bbsSave(controller start)");
log.info("---------------------------" + street);
Member member = memberService.memberfindById(loginMember);
bbsService.bbsSave(bbs,street ,member);
return "redirect:/bbsLists?"+street; //리다이렉트로 보내주면 된다.
}
return "redirect:/bbsList?" + street; 로 get요청을 보내고 싶었다.

하지만 위 스샷처럼 localhost:8080/bbsLists????처럼 ???으로 나오면서 status=400 bad Request 에러가 난다.
이전 공부했던걸 다시 확인해보니
return "redirect:/bbsList?" + street; 처럼 URL에 변수를 더해서 사용하는것은 URL 인코딩이 안되기 때문에 위험하고 사용
하면 안된다는걸 모르고 있었다. 따라서 이 경우에는 RedirectAttributes를 사용해야한다.
@PostMapping("/bbsSave")
public String BbsSave(Bbs bbs,
@RequestParam("street") String street,
RedirectAttributes redirectAttributes,
@SessionAttribute(name = "memberId", required = false)
String loginMember) {
log.info("bbsSave(controller start)");
Member member = memberService.memberfindById(loginMember);
redirectAttributes.addAttribute("address", street);
bbsService.bbsSave(bbs, street, member);
return "redirect:/bbsLists?";
}
위 코드처럼 바꿔주니 의도한대로 동작한다!