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>
然后重啟啟動項目訪問,問題解決。