본문 바로가기

개발일기/프로젝트 일기

HealthDuo - RedirectAttributes

@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?";
}

위 코드처럼 바꿔주니 의도한대로 동작한다!