类型转换出错 400 请求报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

类型转换出错 400 请求报错 

kun坤 2020-05-30 15:16:54 37

类型转换出错 将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);     } 加红的那句出错了,求大神帮助

分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-05-30 15:17:00

    我今天也遇到这个问题了,你的请求里面还带有其他的请求的时候,而且不是你配置的拦截的规则,那么它转换类型的时候就报错了。我这边是页面请求里面还有js的请求,所以controller的方法请求通过了,js的拦截到的时候,你的handler 其实不是你配置的那个,所以就出现这个问题了
    解决办法:
    if (handler instanceof HandlerMethod) { permission = ((HandlerMethod) handler).getMethodAnnotation(Permission.class); } else { return true; }

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章