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

标签 java spring spring-mvc swagger springfox

我正在使用 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/

相关文章:

java - 从 JSON 解析字符串数组

java - 当您有单独的身份验证服务器(用户密码授予)时,如何在 Spring MVC 中实现自定义登录/注销(身份验证)

java - Spring Boot 即时重置数据源

java - 打印 HttpServletRequest JSON 内容

java - 使用多个参数的 Spring Security 登录

java - 读取文件并将行作为字节进行操作的最优雅的方法

java - 求一串由运算符分隔的数字的总和

java - Restful Web 服务中的 Spring @RequestBody 注解

使用 JSON 和 JSP 的 Spring MVC Controller

java - 如何抑制 PMD 中的违规行为?