我正在使用 Springfox 和 Swagger 生成 swagger 文件。现在,我正在使用 @ModelAttribute
从对象 (NetworkCmd
) 中提取变量,以在 swagger 文档中显示为查询参数。
我目前有以下 Controller :
@RequestMapping(value = "/{product_id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseHeader()
public ResponseEntity<?> networkResponse(
@RequestHeader HttpHeaders headers,
@PathVariable("product_id")String productId,
@Valid @ModelAttribute NetworkCmd cmd,
BindingResult result)
throws Exception {
...
}
这是 NetworkCmd
的示例:
@ItemId
@NotNull(message = "product cannot be null")
@ApiModelProperty(
value = "testing")
private String product_id;
@ApiModelProperty(
value = "key",
private String key;
@ApiModelProperty(
value = "parent")
private Boolean is_parent_id;
@Min(0)
@ApiModelProperty(
value = "radius")
private double radius = 10d;
此类中的变量之一是自定义域对象Nearby
。
private Nearby nearby = null;
public Nearby getNearby() {
return nearby;
}
public void setNearby(String nearby) throws ParseException {
this.nearby = Nearby.parse(nearby);
}
这是一种特殊变量,因为它接受一个字符串,然后解析该字符串并将其转换为 Nearby
对象。
我的问题是这个 Nearby
变量没有显示在通过 @ModelAttribute
生成的 swagger 文档上。我很高兴提供更多信息。
最佳答案
解决此问题的一种方法是在您的摘要中创建替代类型规则。这样,每当我们遇到附近的类型时,我们都会将其视为字符串。
new Docket(...)
.directModelSubstitute(Nearby.class, String.class)
关于java - 使用 @ModelAttribute 时未显示自定义域对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42656693/