一、场景说明

        1、maven项目

        2、springboot项目

        3、项目接入swagger2

        4、返回结果统一使用AjaxResult返回,业务数据放到AjaxResult.data字段

1)AjaxResult结构
public class AjaxResult extends HashMap<String, Object>
{
private static final long serialVersionUID = 1L;

/** 状态码 */
public static final String CODE_TAG = "code";

/** 返回内容 */
public static final String MSG_TAG = "msg";

/** 数据对象 */
public static final String DATA_TAG = "data";

/**
* 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
*/
public AjaxResult()
{
}

/**
* 初始化一个新创建的 AjaxResult 对象
*
* @param code 状态码
* @param msg 返回内容
*/
public AjaxResult(int code, String msg)
{
super.put(CODE_TAG, code);
super.put(MSG_TAG, msg);
}

/**
* 初始化一个新创建的 AjaxResult 对象
*
* @param code 状态码
* @param msg 返回内容
* @param data 数据对象
*/
public AjaxResult(int code, String msg, Object data)
{
super.put(CODE_TAG, code);
super.put(MSG_TAG, msg);
if (StringUtils.isNotNull(data))
{
super.put(DATA_TAG, data);
}
}

/**
* 返回成功消息
*
* @return 成功消息
*/
public static AjaxResult success()
{
return AjaxResult.success("操作成功");
}

/**
* 返回成功数据
*
* @return 成功消息
*/
public static AjaxResult success(Object data)
{
return AjaxResult.success("操作成功", data);
}

/**
* 返回成功消息
*
* @param msg 返回内容
* @return 成功消息
*/
public static AjaxResult success(String msg)
{
return AjaxResult.success(msg, null);
}

/**
* 返回成功消息
*
* @param msg 返回内容
* @param data 数据对象
* @return 成功消息
*/
public static AjaxResult success(String msg, Object data)
{
return new AjaxResult(HttpStatus.SUCCESS, msg, data);
}

/**
* 返回错误消息
*
* @return
*/
public static AjaxResult error()
{
return AjaxResult.error("操作失败");
}

/**
* 返回错误消息
*
* @param msg 返回内容
* @return 警告消息
*/
public static AjaxResult error(String msg)
{
return AjaxResult.error(msg, null);
}

/**
* 返回错误消息
*
* @param msg 返回内容
* @param data 数据对象
* @return 警告消息
*/
public static AjaxResult error(String msg, Object data)
{
return new AjaxResult(HttpStatus.ERROR, msg, data);
}

/**
* 返回错误消息
*
* @param code 状态码
* @param msg 返回内容
* @return 警告消息
*/
public static AjaxResult error(int code, String msg)
{
return new AjaxResult(code, msg, null);
}

/**
* 方便链式调用
*
* @param key 键
* @param value 值
* @return 数据对象
*/
@Override
public AjaxResult put(String key, Object value)
{
super.put(key, value);
return this;
}



5、存在问题

1)业务实体加上@ApiModel后,swagger文档并未显示

2)实体配置示例图

【Java】java | swagger | @ApiModel无效_spring boot

3)controller配置示例图

【Java】java | swagger | @ApiModel无效_java_02

 

4)swagger文档示例图

【Java】java | swagger | @ApiModel无效_ajax_03

 

 

 5)特殊说明

1、controller在子模块A中

2、实体vo在子模块B中

3、模块A依赖模块B

4、swagger配置在模块A中,依赖如下

<!-- swagger3--><dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
<!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.2</version>
</dependency>
5、模块B依赖swagger注解模块
<!--swagger的ApiModel注解--><dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>



二、解决方案

1、忽略第一层的AjaxResult

示例图

【Java】java | swagger | @ApiModel无效_数据_04

 说明:代码无调整

2、业务实体增加@ApiModel与@ApiModelProperty

【Java】java | swagger | @ApiModel无效_java_05

 

3、Controller方法增加@ApiResponse配置

【Java】java | swagger | @ApiModel无效_ajax_06

 按需自取

@ApiResponses(value = {
@ApiResponse(code = 0, message = "电站信息", response = StaStationVo.class)
})

4、文档呈现

【Java】java | swagger | @ApiModel无效_数据_07

 

 

5、实际响应

【Java】java | swagger | @ApiModel无效_ajax_08