猿问

如果使用 WebMvcConfigurationSupport 添加转换器

我有一个带有 swagger 文件的 springboot 应用程序。我使用任何 swagger Maven 插件并且它可以工作。

我的 pom.xml 文件:


    <dependency>

        <groupId>io.swagger.core.v3</groupId>

        <artifactId>swagger-core</artifactId>

        <version>2.0.9</version>

    </dependency>

    <dependency>

        <groupId>io.swagger.core.v3</groupId>

        <artifactId>swagger-annotations</artifactId>

        <version>2.0.9</version>

    </dependency>

    <dependency>

        <groupId>io.swagger</groupId>

        <artifactId>swagger-annotations</artifactId>

        <version>1.5.23</version>

    </dependency>

    <dependency>

        <groupId>org.springdoc</groupId>

        <artifactId>springdoc-openapi-ui</artifactId>

        <version>1.1.45</version>

    </dependency>

我使用java enum:


public enum TempReadingSource {

  COLDROOM("coldroom"),

    LOCAL("local"),

    OVEN("oven");


  private String value;


  TempReadingSource(String value) {

    this.value = value;

  }


  @Override

  @JsonValue

  public String toString() {

    return String.valueOf(value);

  }


  @JsonCreator

  public static TempReadingSource fromValue(String text) {

    for (TempReadingSource b : TempReadingSource.values()) {

      if (String.valueOf(b.value).equals(text)) {

        return b;

      }

    }

    return null;

  }

}

我有这个错误:


"Failed to convert value of type 'java.lang.String' to required type 'com.foo.TempReadingSource';

所以我在 Springboot2 配置中添加了一个转换器:


@Configuration

public class StrubConfig extends WebMvcConfigurationSupport {


    @Override

    public FormattingConversionService mvcConversionService() {

        FormattingConversionService f = super.mvcConversionService();

        f.addConverter(new TempReadingSourceConverter());

        return f;

    }


}

和:

public class TempReadingSourceConverter implements Converter<String, TempReadingSource> {

    @Override

    public TempReadingSource convert(String source) {

       try {

          return TempReadingSource.fromValue(source);

       } catch(Exception e) {

          return null;

       }

    }

}

这Converter解决了我的 API(通过邮递员)但现在swagger-ui找不到:

https://img1.sycdn.imooc.com/652796910001c3ea04780184.jpg

宝慕林4294392
浏览 95回答 1
1回答

白板的微信

解决方案是:@Configurationpublic class StrubConfig {&nbsp; &nbsp; @Autowired&nbsp; &nbsp; private FormattingConversionService conversionService;&nbsp; &nbsp; @PostConstruct&nbsp; &nbsp; public void registerCustomConverter() {&nbsp; &nbsp; &nbsp; &nbsp; conversionService.addConverter(new TempReadingSourceConverter());&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答