FlashMap 은 controller 간 redirect 시 지정한 파라미터를 전달하기 위해
Spring 3.1 버전부터 고안된 자료구조이다.
이는 값 전달 시 url 에 해당 파라미터를 노출시키지 않고,
휘발성을 지니고 있어 사용 후에 Spring 에서 자동으로 값을 지워준다는 이점이 있다.
사용법은 일반 Map 자료구조와 유사하며 그 예시는 아래와 같다.
@RequestMapping("send")
public String send(@RequestParam Map<String, String> map, HttpServletRequest request) throws Exception {
FlashMap fmOut = RequestContextUtils.getOutputFlashMap(request);
int page = 1;
if (request.getParameter("page") != null)
page = Integer.parseInt(request.getParameter("page"));
fmOut.put("map", map);
fmOut.put("page", page);
return "redirect:receive";
}
@RequestParam 으로 전달받은 Map 객체와 page 값을 FlashMap 객체에 key 와 value 값으로 저장해 전달한다.
@SuppressWarnings("unchecked")
@RequestMapping("receive")
public String receive(Model model, HttpServletRequest request) throws Exception {
Map<String, ?> fmIn = RequestContextUtils.getInputFlashMap(request);
Map<String, Object> map = new HashMap<>();
int page = 1;
if (fmIn != null) {
map = (Map<String, Object>) fmIn.get("map");
page = (Integer) fmIn.get("page");
}
model.addAttribute("map", map);
model.addAttribute("page", page);
return "food/food_async";
}
이렇게 전달받은 파라미터 값들을 위와 같이 Map 객체에 저장하고,
key 값으로 데이터를 꺼내 변수에 대입하거나 model 객체를 통해 view 단 에 넘길 수 있다.
map = (Map<String, Object>) fmIn.get("map");
추가로 위의 코드에서 형변환 시 타입 판별의 모호함으로 Type safety 경고가 발생하는데,
이 경우 @SuppressWarnings("unchecked") 로 억제가 가능하다.
'Web Development > Spring' 카테고리의 다른 글
[Spring] WebClient - 2. 요청 핸들링 및 API 구성 (0) | 2025.02.26 |
---|---|
[Spring] WebClient - 1. 개념 및 기본 설정 (0) | 2025.02.26 |
[Spring] MultipartFille 을 활용한 다중 파일 업로드 및 출력 (0) | 2022.06.30 |
댓글