使用@ModelAttribute时未显示自定义域对象

时间:2017-03-07 19:27:45

标签: java spring spring-mvc swagger springfox

我使用Springfox和Swagger生成swagger文件。现在我正在使用@ModelAttribute从对象(NetworkCmd)中提取变量,以在swagger文档中显示为查询参数。

我目前有以下控制器:

@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);
}

这是一种特殊变量,因为它接受一个String,然后解析该字符串并将其转换为Nearby对象。

我的问题是这个Nearby变量没有通过@ModelAttribute显示在生成的swagger文档上。我很乐意提供更多信息。

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是在您的文档中创建备用类型规则。这样,只要我们遇到附近的类型,我们就会将其视为一个字符串。

new Docket(...)
     .directModelSubstitute(Nearby.class, String.class)