উপরে নির্মাণের Fabien Kruba ইতিমধ্যেই চমৎকার উত্তর , আমি ভেবেছিলাম এটা চমৎকার হবে যদি **URL এর অংশ একটি উপায় যার অনুরূপ ছিল একটি টীকা মাধ্যমে নিয়ামক পদ্ধতি করার জন্য একটি প্যারামিটার হিসাবে দেওয়া যেতে পারে, @RequestParamএবং @PathVariableবদলে সবসময় একটি ইউটিলিটি পদ্ধতি ব্যবহার করে যা স্পষ্টভাবে প্রয়োজন HttpServletRequest। সুতরাং এটি কিভাবে বাস্তবায়িত হতে পারে তার একটি উদাহরণ এখানে। আশা করি কেউ এটি কাজে লাগবে।
আর্গুমেন্ট রিললভার সহ টীকাটি তৈরি করুন:
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WildcardParam {
class Resolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
return methodParameter.getParameterAnnotation(WildcardParam.class) != null;
}
@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
return request == null ? null : new AntPathMatcher().extractPathWithinPattern(
(String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE),
(String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE));
}
}
}
পদ্ধতি আর্গুমেন্ট সমাধানের নিবন্ধন করুন:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new WildcardParam.Resolver());
}
}
**ইউআরএল এর অংশে সহজে অ্যাক্সেস পেতে আপনার নিয়ামক হ্যান্ডলার পদ্ধতিতে টিকাটি ব্যবহার করুন :
@RestController
public class SomeController {
@GetMapping("/**")
public void someHandlerMethod(@WildcardParam String wildcardParam) {
// use wildcardParam here...
}
}