Interceptor에서 RedirectAttributes 이용하기
개발언어/Java, Spring 2017. 12. 12. 17:55
Spring에선 아래와 같은 방법으로 RedirectAttributes를 이용해 컨트롤러에서 컨트롤러로 파라미터를 전송가능합니다.
FlashAttribute는 1회성이기 때문에 ModelAndView로 addObject해서 View까지 넘기는 모습입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // RedirectAttributes로 파라미터를 넘기면서 요청하는 테스트 컨트롤러 @RequestMapping (value= "/test/call.do" ) public ModelAndView callTest(RedirectAttributes redirectAttributes) throws Exception{ ModelAndView mv = new ModelAndView( "redirect:/test/receive.do" ); redirectAttributes.addFlashAttribute( "param1" , "TEST1" ); redirectAttributes.addFlashAttribute( "param2" , "TEST2" ); redirectAttributes.addFlashAttribute( "param3" , "TEST3" ); return mv; } @RequestMapping (value= "/test/receive.do" ) public ModelAndView receiveTest(HttpServletRequest request) throws Exception{ ModelAndView mv = new ModelAndView( "/test/view" ); Map<String, Object> inputFlashMap = (Map<String,Object>) RequestContextUtils.getInputFlashMap(request); if (inputFlashMap!= null && inputFlashMap.isEmpty()== false ){ Iterator<Entry<String,Object>> iterator = inputFlashMap.entrySet().iterator(); Entry<String,Object) entry = null ; while (iterator.hasNext()){ entry=iterator.next(); mv.addObject(entry.getKey(), entry.getValue()); } } return mv; } |
그러나... 하다보니 Interceptor에서 RedirectAttributes를 사용할 일이 생겼습니다.
통상 인터셉터는 preHandle Override 하는 것이다 보니 위 callTest처럼 파라미터로 "RedirectAttributes redirectAttributes"를 넣을 수가 없습니다.
그래서 찾아낸 방법...
Interceptor에 FlashMap과 FlashMapManager 객체를 만들어 Request에 생성하는 방법입니다.
1 2 3 4 | FlashMap flashMap = new FlashMap(); flashMap.put( "msg" , MessageUtils.getMessage( "login.invalidSession" )); FlashMapManager flashMapManager = RequestContextUtils.getFlashMapManager(request); flashMapManager.saveOutputFlashMap(flashMap, request, response); |
'개발언어 > Java, Spring' 카테고리의 다른 글
JavaMail을 이용한 메일 전송 (javax.mail) (0) | 2018.02.28 |
---|---|
Java Library: Lombok (자동 getter&setter 생성) (0) | 2017.12.21 |
SQL-ERROR-CODE (0) | 2017.12.12 |
[Spring] MesageSource 설정하기 - 공통 메시지 처리 (with 다국어처리) (1) | 2017.11.27 |
[설정] 오류 공통 페이지 설정 (0) | 2017.11.26 |