swagger 報錯:illegal defaultValue null for param type integer


swagger(版本2.9.2) 刷新報錯,錯誤信息如下圖:

 

 問題原因:

根據上面這句報錯信息,點進去AbstractSerializableParameter.java:412可以看到 源碼,

    @JsonProperty("x-example")
    public Object getExample() {
        if (example == null) {
            return null;
        }
        try {
            if (BaseIntegerProperty.TYPE.equals(type)) {
                return Long.valueOf(example);
            } else if (DecimalProperty.TYPE.equals(type)) {
                return Double.valueOf(example);
            } else if (BooleanProperty.TYPE.equals(type)) {
                if ("true".equalsIgnoreCase(example) || "false".equalsIgnoreCase(defaultValue)) {
                    return Boolean.valueOf(example);
                }
            }
        } catch (NumberFormatException e) {
            LOGGER.warn(String.format("Illegal DefaultValue %s for parameter type %s", defaultValue, type), e);
        }
        return example;
    }

Illegal DefaultValue null for parameter type integer`和`NumberFormatException: For input string: ""

從上面這句可以看出,有個默認值是空字符串的變量轉換成Integer類型時異常。

也就是說如果實體屬性類型是Integer,就把 example 轉為 Long 類型,而example默認為 " " ,導致轉換錯誤。

 解決方案:

 方法1.實體類中,Integer類型的屬性加 @ApiModelProperty 時,必須要給example參數賦值,且值必須為數字類型。不推薦

@ApiModelProperty(value = "年齡",example = "22")
private Integer age;

 方法2.新增配置,如下,推薦

 # 默認的配置
           <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2。9.2</version> </dependency>  # 增加兩個配置 <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.22</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.22</version> </dependency>

然后重啟啟動項目訪問,問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM