繁体   English   中英

可选的<?> java类,模型中的字段,未在swagger ui上显示

[英]Optional<?> field in java class, model, not showing on swagger ui

我已经在我的 Spring Boot 应用程序上设置了一个招摇,很多方法和控制器都可以正常工作。 问题是响应类中的一个字段,其中可选字段未在 UI 上显示。

public class CalculatedResult {
    private CalculatorKey key;
    private CalculatedField field;
    **@ApiModelProperty(value = "Depending on CalculatedField it can be number or string")
    private Optional<?> value;**

... getters setters and etc

和招摇班:

@Bean
public Docket api() {
    //global default message that are on all methods
    List<ResponseMessage> globalMessages = Arrays.asList(GLOBAL_MESSAGES); // ignore this
    
    return new Docket(DocumentationType.SWAGGER_2)
            .select()      
            .apis(RequestHandlerSelectors.basePackage("pts.riskengine"))
            .paths(PathSelectors.any())   
            .build()
            .directModelSubstitute(LocalDate.class, String.class)
            .genericModelSubstitutes(ResponseEntity.class)
            .alternateTypeRules(
                    newRule(typeResolver.resolve(DeferredResult.class,
                            typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
                            typeResolver.resolve(WildcardType.class)))
            .additionalModels(typeResolver.resolve(ClientSettings.class), typeResolver.resolve(CalculatedResult.class),
                    typeResolver.resolve(CalculatorKey.class))
            .useDefaultResponseMessages(false)
            .forCodeGeneration(true)
            .apiInfo(apiInfo())
            .securitySchemes(Arrays.asList(securityScheme()))
            .securityContexts(Arrays.asList(securityContext()))
            .globalResponseMessage(RequestMethod.GET, globalMessages)
            .globalResponseMessage(RequestMethod.POST, globalMessages)
            .globalResponseMessage(RequestMethod.PUT, globalMessages)
            .globalResponseMessage(RequestMethod.DELETE, globalMessages)
            ;
}

我试图将 .additionalModels 和 .genericModelSubstitutes 作为字符串放入,但不起作用。 dataType = "java.lang.String" 也没有解决我的问题。 有没有其他人遇到过这种问题或知道如何解决?

查看 UI:屏幕截图

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>   

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
    <scope>compile</scope>
</dependency>

可选类不可序列化。 这就是为什么 swagger 没有显示 Optional 的原因。

https://stackoverflow.com/a/24564612/19008623

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM