【问题标题】:A custom domain object isn't being shown while using @ModelAttribute使用 @ModelAttribute 时未显示自定义域对象
【发布时间】:2017-03-07 19:27:44
【问题描述】:

我正在使用 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);
}

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

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

【问题讨论】:

    标签: java spring spring-mvc swagger springfox


    【解决方案1】:

    解决此问题的一种方法是在您的案卷中创建替代类型规则。这样,每当我们遇到附近的类型时,我们都会将其视为字符串。

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

    【讨论】:

    • 感谢您的回答!不幸的是,这不起作用。我也试过:.directModelSubstitute(Nearby.class, Object.class)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多