Почтальон Почтовый вызов Spring Controller всегда нулевой - PullRequest
0 голосов
/ 09 октября 2018

Я сделал заявку на загрузку Spring с базой данных пользователей.Сейчас я пытаюсь сделать повторный звонок с почтальоном в контроллер, чтобы отправить информацию о пользователе и сохранить ее в базе данных.При повторном вызове в первый раз сохраняется нулевой объект в базе данных (вся информация равна нулю) вместо данных в вызове почтальона, поэтому я думаю, что ошибка заключается в вызове между почтальоном и контроллером.

Сущность:

@Entity
@Table(name = "user", schema = "localhost", catalog = "")
public class UserEntity {
    private int userId;
    private int unitId;
    private String roleName;
    private String firstName;
    private String lastName;

Контроллер:

@RestController
public class UserController {

    @Autowired
    UserService userService;

    @RequestMapping(value = "/addNewUser",
            method = RequestMethod.POST,
            produces = MediaType.APPLICATION_JSON_VALUE,
            consumes = MediaType.APPLICATION_JSON_VALUE)
    public String saveNewUser(UserEntity user) {
        try {
            userService.saveNewUser(user);
            return "User has been saved";
        } catch (NullPointerException npe) {
            return "Nullpointer: User has not been saved";
        } catch (Exception e) {
            return e.getMessage();
        }
    }
}

Вызов почтальона:

Отладчик при отправке звонка почтальона:

user = {UserEntity@8954} 
userId = 0
unitId = 0
roleName = null
firstName = null
lastName = null

Цель этого проекта не в том, чтобы «просто заставить его работать», а в том, чтобы заставить его работать чистым, надлежащим образом.Вот почему я хочу использовать объект для отправки информации вместо того, чтобы указывать ее в параметрах url.

Если кто-то может помочь мне, указав, что идет не так, я был бы очень благодарен.Любые советы по улучшению кода, дающие снайперы, также очень приветствуются.

1 Ответ

0 голосов
/ 09 октября 2018

Вы передаете его как неправильный массив, передаете его как объект.

также Вы определяете userId, unitId как int в pojo, но отправляете как строку в теле, поэтому измените это на "userId":1,"unitId":1.Передайте его, как показано ниже.

{
  "userId":1,
  "unitId":1,
  "roleName":"AAA",
  "firstName":"BBB",
  "lastName":"CCC"
}

и измените public String saveNewUser(UserEntity user) на public String saveNewUser(@RequestBody UserEntity user), добавив @ RequestBody.

Обновление

Добавление к этомуизмените тип содержимого запроса на json enter image description here

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