사용자 도구

사이트 도구


springframework:mvc:redirect

문서의 이전 판입니다!


Spring MVC Redirect

@ModelAttribute와 redirect

컨트롤러에 @ModelAttribute 메소드가 지정된 상태에서 redirect를 수행하면 리다이렉트 주소 뒤에 모든 모델 어트리뷰트가 파라미터로 붙는 현상이 발생한다. 이 때 해결책은 Model 객체의 모든 내용을 삭제한 뒤에 리다이렉트하면 된다. java - How do I prevent Spring 3.0 MVC @ModelAttribute variables from appearing in URL? - Stack Overflow

// ModelMap 객체일 경우
model.clear();
 
// Model 객체일 경우
model.asMap().clear();

전역으로 없애려면,

<mvc:annotation-driven ignoreDefaultModelOnRedirect="true" />

혹은 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#setIgnoreDefaultModelOnRedirecttrue로 설정한다. 신규 애플리케이션은 이를 true로 설정하는 것을 권한다.

–> 최소한 Java Config에서 이 설정과 “redirect:..”시에 Model에 있는 attribute 노출기능이 올바로 작동하지 않았다. TODO

RedirectAttributes

Spring 3.1의 경우 RedirectAttributes를 사용하면 위와 같은 작업이 불필요하다.

 @RequestMapping(value = "/accounts", method = RequestMethod.POST)
 public String handle(Account account, BindingResult result, RedirectAttributes redirectAttrs) {
   if (result.hasErrors()) {
     return "accounts/new";
   }
   // Save account ...
   redirectAttrs.addAttribute("id", account.getId()).addFlashAttribute("message", "Account created!");
   return "redirect:/accounts/{id}";
 }
springframework/mvc/redirect.1440665339.txt.gz · 마지막으로 수정됨: 2015/08/27 17:18 저자 kwon37xi