Weder JAX-RS @QueryParam
noch Frühling @RequestParam
unterstützt Ihre Anforderung, dh Zuordnung mehrerer Anforderungsparameternamen zu derselben Variablen. Ich empfehle, dies nicht zu tun, da es sehr schwierig sein wird, aufgrund der Verwirrung zu unterstützen, welcher Parameter von welchem Client kommt.
Aber wenn Sie wirklich, dies umgehen wollte ((weil Sie nicht die URL aus der 3. Parteien kommen ändern können, vereinbart lange zurück), dann die alternative Verwendung von HandlerMethodArgumentResolver
zu machen, die unsere eigenen Wunsch Argument nebenbei hilft (wie @MyRequestParam
) an die Steuerung Verfahren wie wie in dem unten gezeigten Code:
Controller-Klasse:
@Controller
public class MyController {
@RequestMapping(value="/xyz")
public void train1(@MyRequestParam String postcode) {//custom method argument injected
//Add your code here
}
}
MyRequestParam:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface MyRequestParam {
}
HandlerMethodArgumentResolver Impl Klasse:
public class MyRequestParamWebArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public Object resolveArgument(MethodParameter parameter,
ModelAndViewContainer mavContainer,
NativeWebRequest webRequest,
WebDataBinderFactory binderFactory) {
MyRequestParam myRequestParam =
parameter.getParameterAnnotation(MyRequestParam.class);
if(myRequestParam != null) {
HttpServletRequest request =
(HttpServletRequest) webRequest.getNativeRequest();
String myParamValueToBeSentToController = "";
//set the value from request.getParameter("postal_code")
//or request.getParameter("postalCode")
return myParamValueToBeSentToController;
}
return null;
}
@Override
public boolean supportsParameter(MethodParameter parameter) {
return (parameter.getParameterAnnotation(MyRequestParam.class) != null);
}
}
WebMvcConfigurerAdapter Klasse:
@Configuration
class WebMvcContext extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new MyRequestParamWebArgumentResolver());
}
}
warum Sie Ihren Code komplizierter bacause von "Ruby-Benutzer" behelfen. API sollte Client-unabhängig sein. – dit