Как передать массив объектов в качестве параметра в пользовательском интерфейсе Java swagger?

Мне нужно передать массив объектов в качестве параметра в пользовательском интерфейсе java Swagger. Я не могу этого сделать. Однако я могу легко передать массив строк в качестве параметров. Но не могу понять, как передать массив объектов, вложенных в другой класс или DTO. Я использую Java Spring и разрабатываю веб-сервис RESTful.

Ниже приведен мой 1-й DTO, который передается как ModelAttribute в моем REST API в качестве параметра:

public class BusinessDetailsDTO {

    private BusinessMembersDTO[] businessMembers;

    public BusinessMembersDTO[] getBusinessMembers() {
        return businessMembers;
    }
    public void setBusinessMembers(BusinessMembersDTO[] businessMembers) {
        this.businessMembers = businessMembers;
    }
}

Ниже приведен 2-й DTO, массив которого сделан свойством в 1-м DTO:

public class BusinessMembersDTO {

    private String ownerRole;
    private String businessLocation;
    private Long memberId;
    //getter setter below 
}

Ниже приведено определение метода контроллера:

@ApiOperation(value = "Add business info")
    @RequestMapping(method = RequestMethod.POST, value = "/addBusinessInfo", produces={"application/json"})
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "Success", response = ResponseEntity.class),
            @ApiResponse(code = 401, message = "Unauthorized"),
            @ApiResponse(code = 403, message = "Forbidden"),
            @ApiResponse(code = 404, message = "Not Found"),
            @ApiResponse(code = 500, message = "Failure") })
    public ResponseEntity<BusinessDetails> addBusinessInfo(@RequestParam(
            @ModelAttribute BusinessDetailsDTO businessDetailsDTO) {

Моя проблема в том, что я не могу понять, как передать значения ownerRole, которые присутствуют в BusinessMembersDTO. Пользовательский интерфейс swagger показывает Array[] в столбце DataType рядом с полем businessMembers участников.

Пожалуйста, помогите.


person Community    schedule 21.01.2017    source источник
comment
Поможет ли BusinessDetailsDTO содержать список BusinessMembersDTO (в отличие от массива BusinessMembersDTO) в столбце DataType пользовательского интерфейса Swagger?   -  person MrMister    schedule 22.01.2017
comment
Никогда не думал об этом. Хотя мне он кажется многообещающим. Попробую и обязательно вернусь с результатом. Спасибо   -  person    schedule 22.01.2017
comment
Это все еще не работает. добавил private List<BusinessMembersDTO> businessMembersDTO; в 1-й DTO, но не повезло   -  person    schedule 24.01.2017
comment
Если я не ошибаюсь, вы также должны добавить геттер и сеттер, чтобы сопровождать это новое поле private List<...>. Можешь попробовать?   -  person MrMister    schedule 26.01.2017
comment
Я уже пробовал только с геттер-сеттером.   -  person    schedule 27.01.2017


Ответы (1)


Попробуйте поместить BusinessDetailsDTO непосредственно в качестве ответа в ApiResponse, как показано ниже.

@ApiResponse (код = 200, сообщение = «Успех», ответ = BusinessDetailsDTO.class)

person Anil Agrawal    schedule 25.01.2017
comment
Мне нужно получить BusinessDetailsDTO в качестве параметра, а не об отправке в ответ. - person ; 25.01.2017
comment
RequestParam может быть только литералом. Вы можете попробовать @RequestBody - person Anil Agrawal; 25.01.2017
comment
не полезно. То, что вы мне говорите, не связано с проблемой, которую я указал в своем вопросе. - person ; 27.01.2017
comment
Если вы хотите настроить существующие функции Swagger, посетите этот блог anilagrawal038.wordpress.com/2016/12/25/ - person Anil Agrawal; 27.01.2017
comment
Насколько я знаю, вложенные объекты не поддерживаются для @RequestParam. Перейдите по ссылке github.com/springfox/springfox/issues/1134. - person Anil Agrawal; 27.01.2017