如何解决Swagger中不可见ModelAttribute
我正在使用Spring 2.3
,并使用
implementation('io.springfox:springfox-swagger2:2.8.0')
implementation('io.springfox:springfox-swagger-ui:2.8.0')
我想从UI接受分页参数,模型是
@Immutable
@JsonSerialize(as = ImmPaginationParameters.class)
@JsonDeserialize(as = ImmPaginationParameters.class)
public interface PaginationParameters {
Integer getLimit();
Integer getOffset();
}
在控制器中,我将该方法声明为
@GetMapping("/preview")
@NonNull
ResponseEntity<List<SomeDto>> getPreviewResults(@PathVariable final String projectId,@ModelAttribute final PaginationParameters params) {
但是,在Swagger用户界面中并没有体现出同样的含义。
我尝试将其转换为帖子映射,并在@Valid
前面也添加了PaginationParameters
,但还是一样。检查了API文档,再次没有分页参数的迹象。我检查了帖子What is @ModelAttribute in Spring MVC?,这种定义modelAttribute的方式看起来就足够了。不确定我是否必须在PaginationParams类中声明其他内容。
解决方法
尝试将@RequestBody与@ApiParam一起使用,而不是@ModelAttribute,并在传递请求正文时也使用@Postmapping:-
@PostMapping("/preview")
@NonNull
ResponseEntity<List<SomeDto>> getPreviewResults(@ApiParam @PathVariable final String projectId,@ApiParam @RequestBody final PaginationParameters params) {
,
结果证明ModelAttribute与Immutable
类不能很好地配合使用。将其更改为lombok后,它可以正常工作
@Data
public class PaginationParameters {
private Integer limit;
private Integer offset;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。