先上结论:
在swagger 2.0.6等后面的高版本中,由于升级了Springfox基础组件,如果开发者使用类似JRebel这类热加载插件的时候,会出现类字段没有的情况。将项目部署后就可以显示了。
问题描述:
swagger版本:
<!--Swagger2支持-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<!--SwaggerUI支持-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
代码:
// 实体类
@ApiModel(description = "查询参数")
@Data
public class DataExchangeQuery {
@ApiModelProperty(value = "站点ID",required = true)
@WhereType(filed = "STID")
public String siteId;
}
// controller
@ApiOperation(value="查询水量数据")
@PostMapping("/water/volume/list")
public Result<List<MonitorWaterVolume>> get(@RequestBody @Validated DataExchangeQuery query){
QueryWrapper<MonitorWaterVolume> queryWrapper = WrapperGenUtil.invoke(query);
return GenResult.ok(siMonitorWaterVolumeMapper.selectList(queryWrapper));
}
结果:swagger-ui界面没有字段属性说明:
解决
尝试了各种办法,包括替换swagger包等,最后在knief官网看到可能是jrebel这类热加载插件的问题,最后将项目打包部署在tomcat中,解决!
这里也附上一些常见的swagger-ui界面没有字段属性说明的原因:
- 返回值是 泛型/Object/map等