Loading...
Spring Framework Reference Documentation 7.0.2의 Redirect Attributes의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
기본적으로, 모든 model attribute는 redirect URL에서 URI 템플릿 변수로 노출되는 것으로 간주됩니다. 나머지 attribute 중 primitive type이거나 primitive type의 collection 또는 array인 것들은 자동으로 query parameter로 추가됩니다.
model 인스턴스가 redirect를 위해 특별히 준비된 경우, primitive type attribute를 query parameter로 추가하는 것은 원하는 결과일 수 있습니다. 그러나 어노테이션 기반 controller에서는 model이 렌더링 목적(예를 들어, 드롭다운 필드 값)을 위해 추가된 추가 attribute를 포함할 수 있습니다. 이러한 attribute가 URL에 나타날 가능성을 피하기 위해, @RequestMapping 메서드는 RedirectAttributes 타입의 argument를 선언하고 이를 사용하여 RedirectView에 제공할 정확한 attribute를 지정할 수 있습니다. 메서드가 redirect를 수행하면 RedirectAttributes의 content가 사용됩니다. 그렇지 않으면 model의 content가 사용됩니다.
RequestMappingHandlerAdapter는 ignoreDefaultModelOnRedirect라는 flag를 제공하며, 이를 사용하여 controller 메서드가 redirect를 수행하는 경우 기본 Model의 content가 절대 사용되지 않도록 지정할 수 있습니다. 대신 controller 메서드는 RedirectAttributes 타입의 attribute를 선언해야 하며, 그렇지 않으면 어떤 attribute도 RedirectView로 전달되지 않아야 합니다. MVC 네임스페이스와 MVC Java 설정 모두는 이전 버전과의 호환성을 유지하기 위해 이 flag를 false로 설정한 상태를 유지합니다. 그러나 새로운 애플리케이션의 경우 이를 true로 설정하는 것을 권장합니다.
현재 request로부터의 URI 템플릿 변수는 redirect URL을 확장할 때 자동으로 사용 가능하게 되며, 이를 Model이나 RedirectAttributes를 통해 명시적으로 추가할 필요가 없습니다. 다음 예제는 redirect를 정의하는 방법을 보여줍니다:
1@PostMapping("/files/{path}") 2public String upload(...) { 3 // ... 4 return "redirect:files/{path}"; 5}
1@PostMapping("/files/{path}") 2fun upload(...): String { 3 // ... 4 return "redirect:files/{path}" 5}
redirect 대상에 data를 전달하는 또 다른 방법은 flash attribute를 사용하는 것입니다. 다른 redirect attribute와 달리, flash attribute는 HTTP 세션에 저장되며(따라서 URL에 나타나지 않습니다). 자세한 내용은 Flash Attributes를 참조하십시오.
@RequestAttribute
Flash Attributes