1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.web.servlet.mvc.method.annotation;
18
19 import java.util.Map;
20
21 import org.springframework.core.MethodParameter;
22 import org.springframework.ui.Model;
23 import org.springframework.ui.ModelMap;
24 import org.springframework.validation.DataBinder;
25 import org.springframework.web.bind.support.WebDataBinderFactory;
26 import org.springframework.web.context.request.NativeWebRequest;
27 import org.springframework.web.method.support.HandlerMethodArgumentResolver;
28 import org.springframework.web.method.support.ModelAndViewContainer;
29 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
30 import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class RedirectAttributesMethodArgumentResolver implements HandlerMethodArgumentResolver {
46
47 @Override
48 public boolean supportsParameter(MethodParameter parameter) {
49 return RedirectAttributes.class.isAssignableFrom(parameter.getParameterType());
50 }
51
52 @Override
53 public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
54 NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
55
56 DataBinder dataBinder = binderFactory.createBinder(webRequest, null, null);
57 ModelMap redirectAttributes = new RedirectAttributesModelMap(dataBinder);
58 mavContainer.setRedirectModel(redirectAttributes);
59 return redirectAttributes;
60 }
61
62 }