Получите объект с нулевыми атрибутами в бэкэнде при передаче json через запрос на размещение - PullRequest
1 голос
/ 07 мая 2020

По сути, я хочу написать метод HTTP put для обновления только одного атрибута (объекта), но когда я тестирую это с помощью почтальона, он выдает вложенное исключение NullPointerExeption (у меня есть белая проверка нуля с этим атрибутом, но не с его вложенными атрибутами). Вот часть кода:

 @Override
    public int setProfile(long id, Profile profile) {
        Optional<Candidate> optional = findById(id);
        optional.ifPresent(c -> {
            c.setProfile(profile);
            updateById(id, c);
        });
        return optional.isPresent() ? 0 : 1;
    }

контроллер:

 @PutMapping(path = "/setProfile/{id}")
    public void setProfile(@PathVariable("id") long id, @RequestBody Profile profile){
        service.setProfile(id, profile);
    }

Когда я передал этот «профиль», я получил объект профиля, не равный NULL, но когда я хотел использовать что-то вроде profile.getName (), он вернул null. Странно то, что даже если я передал ноль вроде этого:

{ "profile": null }

У меня все равно было то же самое (профиль не был нулевым, но profile.getName () имеет значение null)

Спасибо вам за то, что прочитали этот вопрос :)

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Проверьте, совпадают ли имена атрибутов профиля в вашем java классе и атрибутов в JSON.

Также, когда вы передаете JSON как { "profile": null }, он вызовет конструктор без аргументов класса Profile java и, следовательно, вы видите, что Profile не является нулевым, что является ожидаемым поведением.

0 голосов
/ 07 мая 2020

Вы должны проверить свои объекты, потому что у меня возникла эта проблема, и я решил ее, когда проверял идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...