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 javax.servlet.http.HttpServletRequest;
20
21 import org.springframework.core.MethodParameter;
22 import org.springframework.web.bind.support.WebDataBinderFactory;
23 import org.springframework.web.context.request.NativeWebRequest;
24 import org.springframework.web.method.support.HandlerMethodArgumentResolver;
25 import org.springframework.web.method.support.ModelAndViewContainer;
26 import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
27 import org.springframework.web.util.UriComponentsBuilder;
28
29
30
31
32
33
34
35
36
37
38 public class UriComponentsBuilderMethodArgumentResolver implements HandlerMethodArgumentResolver {
39
40 @Override
41 public boolean supportsParameter(MethodParameter parameter) {
42 return UriComponentsBuilder.class.isAssignableFrom(parameter.getParameterType());
43 }
44
45 @Override
46 public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
47 NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
48
49 HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
50 return ServletUriComponentsBuilder.fromServletMapping(request);
51 }
52
53 }