异常信息如下:
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_281]
at java.lang.Long.parseLong(Long.java:601) ~[na:1.8.0_281]
at java.lang.Long.valueOf(Long.java:803) ~[na:1.8.0_281]
at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412) ~[swagger-models-1.5.20.jar:1.5.20]
进入AbstractSerializableParameter类的getExample方法(swagger-models包下)
方法中只进行了NULL判断,没有进行空字符串的判断
将版本升级后在看代码解决了此问题,升级后的源码如下,多加了一个isEmpty的判断,原来是没有这个判断的
@JsonProperty("x-example")
public Object getExample() {
if (example == null || example.isEmpty()) {
return example;
}
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;
}
pom文件修改
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${spring-swagger.version}</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger-models.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${spring-swagger.version}</version>
</dependency>
<spring-swagger.version>2.9.2</spring-swagger.version>
<swagger-models.version>1.5.22</swagger-models.version>