大家在做SSM项目时对于设置传参的必须或非必须这个需求应该是比较常见的,那么正常的两种情况应该是:
- 对于必须参数应该是不传会出错,传则正常获取;
- 对于非必须参数应该是不传默认为null(当然也可以修改默认值),传则正常获取。
一般设置SSM方法参数可以有:直接参数名字对应,或者使用@RequestParam注解,或者使用@Model注解等多个方式,这里就不详细说明了,总之是没有什么大问题的。
那么问题来了,为什么在我加入Swagger的@ApiParam注解之后,就会出现问题呢:
- 对于必须参数来说,设置
@ApiParam(required = true)
属性就可以了;效果是不传会出错,传则正常获取。(没有出现问题) - 对于非必须参数就有点不对了,在我设置
@ApiParam(required = false)
或不设置此属性时;效果却是不传会有415错误(不支持媒体类型参数),传则正常获取。(与期望不符)
这里先说下我的解决办法:
- 对于必须参数来说,需要设置
@ApiParam(required = true)
,以及@RequestParam(required = ture)
或@RequestParam
; - 对于非必须参数来说,需要设置
@ApiParam
或@ApiParam(required = false)
,以及@RequestParam(required = false)
。
那么这个小问题出现的原因是什么呢?尝试之下认为:
- Swagger的
@ApiParam
注解的required
属性值默认为