类型转换出错 将DefaultServletHttpRequestHandler 转换为HandlerMethod类型
org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler cannot be cast to org.springframework.web.method.HandlerMethod
如何将DefaultServletHttpRequestHandler 转换为HandlerMethod类型
在
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String businessName = resolve(urlPathHelper.getServletPath(request)); request.setAttribute(TENANT_BUSINESS_NAME_KEY, businessName); // restrict the access HandlerMethod method = (HandlerMethod) handler; TenantResource tenantResource = method.getMethodAnnotation(TenantResource.class); RootResource rootResource = method.getMethodAnnotation(RootResource.class); boolean isRootResource = false; // get annotation from class when no annotation is specified if (tenantResource == null && rootResource == null) { tenantResource = AnnotationUtils.findAnnotation(method.getBeanType(), TenantResource.class); rootResource = AnnotationUtils.findAnnotation(method.getBeanType(), RootResource.class); }
// still with no annotation, set default if (tenantResource == null && rootResource == null) { isRootResource = true; }
// tenant resource if (tenantResource != null && StringUtils.isEmpty(businessName)) { throw new NoHandlerFoundException(request.getMethod(), request.getRequestURI(), null); }
// root resource if ((rootResource != null || isRootResource) && !StringUtils.isEmpty(businessName)) { throw new NoHandlerFoundException(request.getMethod(), request.getRequestURI(), null); }
return super.preHandle(request, response, handler); } 加红的那句出错了,求大神帮助
我今天也遇到这个问题了,你的请求里面还带有其他的请求的时候,而且不是你配置的拦截的规则,那么它转换类型的时候就报错了。我这边是页面请求里面还有js的请求,所以controller的方法请求通过了,js的拦截到的时候,你的handler 其实不是你配置的那个,所以就出现这个问题了
解决办法:
if (handler instanceof HandlerMethod) { permission = ((HandlerMethod) handler).getMethodAnnotation(Permission.class); } else { return true; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。