내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
springframework:mvc:redirect
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Spring MVC Redirect ====== ===== @ModelAttribute와 redirect ===== 컨트롤러에 ''@ModelAttribute'' 메소드가 지정된 상태에서 redirect를 수행하면 리다이렉트 주소 뒤에 모든 모델 어트리뷰트가 파라미터로 붙는 현상이 발생한다. 이 때 해결책은 **Model 객체의 모든 내용을 삭제한 뒤에 리다이렉트**하면 된다. [[http://stackoverflow.com/questions/2163517/how-do-i-prevent-spring-3-0-mvc-modelattribute-variables-from-appearing-in-url|java - How do I prevent Spring 3.0 MVC @ModelAttribute variables from appearing in URL? - Stack Overflow]] <code java> // ModelMap 객체일 경우 model.clear(); // Model 객체일 경우 model.asMap().clear(); </code> ==== ignoreDefaultModelOnRedirect ==== 전역으로 Model 데이터의 파라미터화를 막으려면, <code xml> <mvc:annotation-driven ignoreDefaultModelOnRedirect="true" /> </code> 혹은 Java Config의 경우 ''org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#setIgnoreDefaultModelOnRedirect'' 를 ''true''로 설정한다. 신규 애플리케이션은 이를 ''true''로 설정하는 것을 권한다. ===== RedirectAttributes ===== Spring 3.1의 경우 [[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/servlet/mvc/support/RedirectAttributes.html|RedirectAttributes]]를 사용하면 위와 같은 작업이 불필요하다. <code java> @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}"; } </code> ==== 주의 ==== ''RedirectAttributes''를 사용하던 ''ignoreDefaultModelOnRedirect=true''이던, Request에 attribute로 넣은 값들은 자동으로 파라미터로 들어갔다. TODO 확인 필요.
springframework/mvc/redirect.txt
· 마지막으로 수정됨: 2015/08/27 17:28 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로