Нулевые значения для обоих объектов @RequestBody, отправленных методом PUT на Postman в RestController? - PullRequest
0 голосов
/ 17 июня 2020

Я хочу отправить два разных объекта с помощью метода PUT, первый объект - это UserDTO, а второй - AdsDTO. Но по какой-то причине они оба являются нулевыми в реализации службы. Это мой json:

{

 "userDTO" :
  {
  "aboutUs": "xxx",
  "address": "xxx",
  "businessType": "xxx",
  "city": "xx",
  "company": "xxxx",
  "companyImage": [
    "xxx","xxx"
  ],
  "credit": "xx",
  "dateOfBirth": "xxx",
  "email": "xxx",
  "location": "xxx",
  "mobile": "xxx",
  "name": "xxx",
  "phone": "xxx",
  "region": "xxx",
  "roleName": "xxx",
  "surname": "xxx",
  "userName": "xxx",
  "visible": "xxx",
  "website": "xxx"
}, 
"adsDTO" : {
  "adsGroupId": "xx",
  "adsSubGroupId": "xx",
  "adsType": "xxx",
  "description": "xxx",
  "image": [
    "xxx", "xxx"
  ],
  "price": "xxx",
  "productName": "xxx"}
}

И мой контроллер:

@PutMapping("users/favourites")
    public ResponseEntity<UserDTO> updateUserFavourites(@RequestHeader("Authorization")String token, @RequestBody UserDTO userDTO, AdsDTO adsDTO) throws NotFoundException, ForbiddenException, BadRequestException{
        
        return new ResponseEntity<UserDTO>(jwtUserServiceImplement.updateUserFavourites(userDTO, token, adsDTO), HttpStatus.OK);
    }

Конечно, это xxx скрытые значения :). И когда я нажимаю запрос PUT в Postman и отлаживаю приложение, я вижу, что оба моих параметра @RequestBody равны нулю. Просто хочу сказать, что я видел похожие проблемы, и в одном из возможных решений отсутствовали геттеры / сеттеры, но они у меня есть. Возможно, эта ошибка связана с моим контроллером, но я почти уверен, что это ошибка неправильного форматирования JSON. Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 17 июня 2020

У вас не может быть двух объектов для @RequestBody. Но вы можете создать объект запроса, который инкапсулирует ваши два DTO и использовать это:

public class UserAdsRequest {
    private userDTO;
    private adsDTO;

    // getters and setters
}
    PutMapping("users/favourites")
    public ResponseEntity<UserDTO> updateUserFavourites(@RequestHeader("Authorization")String token, @RequestBody UserAdsRequest userAdsRequest) throws NotFoundException, ForbiddenException, BadRequestException{

        return new ResponseEntity<UserDTO>(jwtUserServiceImplement.updateUserFavourites(userAdsRequest.getUserDTO(), token, userAdsRequest.getAdsDTO()), HttpStatus.OK);
    }
...