@Override
	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
					NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
		AntPathMatcher pathMatcher = new AntPathMatcher();
		RequestMapping requestMappingOnMethod = parameter.getMethodAnnotation(RequestMapping.class);
		RequestMapping requestMappingOnClass = getDeclaringClassRequestMapping(parameter);
		String combine = pathMatcher.combine(requestMappingOnClass.value()[0], requireNonNull(requestMappingOnMethod).value()[0]);
		String path = ((ServletWebRequest) webRequest).getRequest().getRequestURI().substring(webRequest.getContextPath().length());
		return PathUtils.removePrependedSlash(pathMatcher.extractPathWithinPattern(combine, EncodingUtils.decodePathWithUTF8(path)));
	}
Custom argument resolver to catch the unresolved remaining path.

<pre>
 @RequestMapping("hello/**")
	public String handleURL(@RemainedPath String path) {
  ....
	}
</pre>

When hello/world/1 url is called, world/1 will be provided in path.

@since 3.0
ngrinder-controller/src/main/java/org/ngrinder/infra/spring/RemainedPathMethodArgumentResolver.java