小编Ish*_*ghe的帖子

@PathVariable 的自定义参数解析器

场景:我的控制器接受Longid 的值,该值是路径变量。

我需要传递一个String对 id 的外部引用。所以我需要解析字符串对其Long值的引用。

尝试:当注释@PathVariable存在时,我的自定义参数解析器不会PathVariableMethodArgumentResolver像解析器列表中的自定义解析器那样被调用,它只支持带有@PathVariable注释的所有参数

@PathVariable如果我删除并添加自己的注释,效果很好。但随后 Swagger 获取 id 作为请求正文参数并产生以下错误:

TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
Run Code Online (Sandbox Code Playgroud)

我的自定义解析器:

@Override
public boolean supportsParameter( MethodParameter methodParameter )
{
    return methodParameter.hasParameterAnnotation( ExternalRefParam.class );
}

@Override public Object resolveArgument( MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory ) throws Exception
{
    Map nameValueMap = (Map) nativeWebRequest.getAttribute( HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, 0 );
    switch( methodParameter.getParameterName() )
    { …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc swagger swagger-2.0

3
推荐指数
1
解决办法
2536
查看次数

标签 统计

java ×1

spring ×1

spring-mvc ×1

swagger ×1

swagger-2.0 ×1