public class PrefixArgumentResolver implements HandlerMethodArgumentResolver{ //WebArgumentResolver{
@Override
public boolean supportsParameter(MethodParameter mp) {
return mp.hasParameterAnnotation(ReqParamPrefix.class) && !Collection.class.isAssignableFrom(mp.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter mp, ModelAndViewContainer mavc, NativeWebRequest req, WebDataBinderFactory bf) throws Exception {
Object target = mp.getParameterType().newInstance();
String prefix = mp.getParameterAnnotation(ReqParamPrefix.class).value(), separator = ".";
MutablePropertyValues pvs = new ServletRequestParameterPropertyValues(req.getNativeRequest(ServletRequest.class), prefix, separator);
WebDataBinder binder = new WebDataBinder(target);
binder.bind(pvs);
return target;
}
}
@Override
public boolean supportsParameter(MethodParameter mp) {
return mp.hasParameterAnnotation(ReqParamPrefix.class) && !Collection.class.isAssignableFrom(mp.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter mp, ModelAndViewContainer mavc, NativeWebRequest req, WebDataBinderFactory bf) throws Exception {
Object target = mp.getParameterType().newInstance();
String prefix = mp.getParameterAnnotation(ReqParamPrefix.class).value(), separator = ".";
MutablePropertyValues pvs = new ServletRequestParameterPropertyValues(req.getNativeRequest(ServletRequest.class), prefix, separator);
WebDataBinder binder = new WebDataBinder(target);
binder.bind(pvs);
return target;
}
}