반응형

FlashAttribute

RedirectAttributes와 비슷하지만 FlashAttribute는 요청을 보낼 때 session에 넣고 넘겨준다. 그리고 바로 다음 요청이 처리되면 session에서 지워진다. 따라서 일회성이다.

  • 사용법

    @PostMapping("/events/form/limit")
    public String eventsFormLimitSubmit(@Validated @ModelAttribute Event event,
                                        BindingResult bindingResult,
                                        SessionStatus sessionStatus,
                                        RedirectAttributes attributes) {
        if(bindingResult.hasErrors()) {
          return "/events/form-limit";
        }
        sessionStatus.setComplete();
        // RedirectAttributes안에 addFlashAttribute를 사용한다.
        attributes.addFlashAttribute("newEvent",event);
        return "redirect:/events/list";
    }

  • @ModelAttribute("newEvent") Event event를 통하여 받아도 되지만 FlashAttr의 경우 자동으로 Model에 넣어준다.

    Event newEvent = (Event) model.asMap().get("newEvent");

    Object로 넘어오기때문에 (Event)로 타입을 컨버전해주어야한다.


  • RedirectAttributes는 String으로 바뀔 수 있는 값만 넣어줄 수 있었지만 FlashAttribute는 임의의 객체를 저장할 수도 있다.

  • RedirectAttributes는 URI 쿼리 파라미터로 데이터를 담아 넘기지만 FlashAttribute는 session에 담아 넘기므로 URI에 데이터가 노출되지않는다.
반응형

BELATED ARTICLES

more