项目场景:
每次访问Swagger初始页面,发现程序有报错
2020-08-31 13:24:31,870 WARN 16972 --- [nio-9001-exec-2] : Illegal DefaultValue null for parameter type integer
: For input string: ""
at (:65) ~[na:1.8.0_251]
at (:601) ~[na:1.8.0_251]
at (:803) ~[na:1.8.0_251]
at (:412) ~[swagger-models-1.5.:1.5.20]
at .(Unknown Source) ~[na:na]
at (:43) ~[na:1.8.0_251]
at (:498) ~[na:1.8.0_251]
解决方案:
手动给被A@ApiModelProperty注解修饰integer类型设置一个默认值。例如我的vo改成如下 @ApiModelProperty(value = "类型:1集团生产环境2集团测试环境3深圳生产环境4深圳测试环境",example = "1")
/**
* @Author: wbdengtt
* @Date: 2020/7/21 13:30
*/
@Data
public class TrackLogVO {
@ApiModelProperty("接口名字,支持模糊匹配")
String fullName;
@ApiModelProperty("示例:")
String methodName;
@ApiModelProperty("忽略字段,逗号分隔 示例:Elapsed,Timestamp,Machine")
String ignores;
@ApiModelProperty("开始时间:yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Date startDate;
@ApiModelProperty("结束时间:yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Date endDate;
@ApiModelProperty(value = "类型:1集团生产环境2集团测试环境3深圳生产环境4深圳测试环境",example = "1")
Integer type;
}
问题描述:
之前使用没有报错的,然后因为我想给Swagger加一些注释。让访问的人知道我的各个字段是做什么的。我就给了我的Vo字段添加了@ApiModelProperty进行注释.后序发现启动的时候有了报错。但是不影响使用。可以不理会。但是对于我这种强迫症是肯定要解决的
/**
* @Author: wbdengtt
* @Date: 2020/7/21 13:30
*/
@Data
public class TrackLogVO {
@ApiModelProperty("接口名字,支持模糊匹配")
String fullName;
@ApiModelProperty("示例:")
String methodName;
@ApiModelProperty("忽略字段,逗号分隔 示例:Elapsed,Timestamp,Machine")
String ignores;
@ApiModelProperty("开始时间:yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Date startDate;
@ApiModelProperty("结束时间:yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
Date endDate;
@ApiModelProperty("类型:1集团生产环境2集团测试环境3深圳生产环境4深圳测试环境")
Integer type;
}
原因分析:
我是添加了@APIModelProperty才报错的。我把注解去掉,报错就没有了。那么很明显是这个注解的问题。
然后又因为不影响使用。而且从报错代码里看。没有一行是指向我们写的代码。多半是这个Swagger自身可能有哪些缺陷导致的。
然后分析:Illegal DefaultValue null for parameter type integer : For input string: ""
非法的默认值null,对Integer类型。数字格式异常,通过输入“”。但是我没有设置默认值啊。难道没有设置默认值就认为是null? 我尝试手动给Integer类型设置默认值。发现解决了问题。我们本来以为我的String和Date也会发生这种错误的。谁知只有Integer类型有这问题、我觉得应该是Swagger本身的缺陷。不知道人家什么时候解决